unsigned short HIDDTransferDriver_ReadReport(void *pData, unsigned int dLength) { if (pData == 0) { return hiddTransferDriver.iReportLen; } if (dLength > HIDDTransferDriver_REPORTSIZE) { dLength = HIDDTransferDriver_REPORTSIZE; } if (dLength > hiddTransferDriver.iReportLen) { dLength = hiddTransferDriver.iReportLen; } hiddTransferDriver.iReportLen = 0; memcpy(pData, hiddTransferDriver.iReportBuf, dLength); return dLength; }