Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ReadFile
- BOOL WINAPI __E__ReadFile__(
- HANDLE hFile,
- __out_bcount(nNumberOfBytesToRead) LPVOID lpBuffer,
- DWORD nNumberOfBytesToRead,
- LPDWORD lpNumberOfBytesRead,
- LPOVERLAPPED lpOverlapped
- )
- {
- BOOL res = ReadFile(hFile, lpBuffer, nNumberOfBytesToRead, lpNumberOfBytesRead, lpOverlapped);
- if (!res || hFile != vhCom || !fCBReadMicom)
- return res;
- BYTE* data = (BYTE*)lpBuffer;
- if (nNumberOfBytesToRead == 1 && mReadPac.rLen == 0) {
- if (data[0] == 0xAA) {
- mReadPac.rData[mReadPac.rLen] = 0xAA;
- mReadPac.rLen += *lpNumberOfBytesRead;
- }
- } else if (nNumberOfBytesToRead == 3 && mReadPac.rLen == 1) {
- memcpy(&mReadPac.rData[mReadPac.rLen], data, *lpNumberOfBytesRead);
- mReadPac.rLen += *lpNumberOfBytesRead;
- mReadPac.mgr = (((mReadPac.rData[1] & 0xf0) >> 4) & 0xf);
- mReadPac.grp = (mReadPac.rData[1] & 0xf);
- mReadPac.cmd = mReadPac.rData[2];
- mReadPac.len = mReadPac.rData[3];
- } else if (mReadPac.rLen > 3) {
- memcpy(&mReadPac.rData[mReadPac.rLen], data, *lpNumberOfBytesRead);
- mReadPac.rLen += *lpNumberOfBytesRead;
- if (mReadPac.rLen == (mReadPac.len + 5)) {
- mReadPac.checkSum = mReadPac.rData[mReadPac.rLen - 1];
- int bypass = fCBReadMicom(&mReadPac);
- mReadPac.rLen = 0;
- if (bypass)
- data[*lpNumberOfBytesRead - 1] += 1;
- }
- }
- return res;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement