Advertisement
Guest User

Untitled

a guest
Nov 21st, 2017
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ReadFile
  2. BOOL WINAPI __E__ReadFile__(
  3.     HANDLE hFile,
  4.     __out_bcount(nNumberOfBytesToRead) LPVOID lpBuffer,
  5.     DWORD nNumberOfBytesToRead,
  6.     LPDWORD lpNumberOfBytesRead,
  7.     LPOVERLAPPED lpOverlapped
  8.     )
  9. {
  10.     BOOL res = ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, lpOverlapped);
  11.  
  12.     if (!res || hFile != vhCom || !fCBReadMicom)
  13.         return res;
  14.  
  15.     BYTE* data = (BYTE*)lpBuffer;
  16.  
  17.     if (nNumberOfBytesToRead == 1 && mReadPac.rLen == 0) {
  18.         if (data[0] == 0xAA) {
  19.             mReadPac.rData[mReadPac.rLen] = 0xAA;
  20.             mReadPac.rLen += *lpNumberOfBytesRead;
  21.         }
  22.     } else if (nNumberOfBytesToRead == 3 && mReadPac.rLen == 1) {
  23.         memcpy(&mReadPac.rData[mReadPac.rLen], data, *lpNumberOfBytesRead);
  24.         mReadPac.rLen += *lpNumberOfBytesRead;
  25.  
  26.         mReadPac.mgr = (((mReadPac.rData[1] & 0xf0) >> 4) & 0xf);
  27.         mReadPac.grp = (mReadPac.rData[1] & 0xf);
  28.         mReadPac.cmd = mReadPac.rData[2];
  29.         mReadPac.len = mReadPac.rData[3];
  30.     } else if (mReadPac.rLen > 3) {
  31.         memcpy(&mReadPac.rData[mReadPac.rLen], data, *lpNumberOfBytesRead);
  32.         mReadPac.rLen += *lpNumberOfBytesRead;
  33.  
  34.         if (mReadPac.rLen == (mReadPac.len + 5)) {
  35.             mReadPac.checkSum = mReadPac.rData[mReadPac.rLen - 1];
  36.             int bypass = fCBReadMicom(&mReadPac);
  37.             mReadPac.rLen = 0;
  38.  
  39.             if (bypass)
  40.                 data[*lpNumberOfBytesRead - 1] += 1;
  41.         }
  42.     }
  43.  
  44.     return res;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement