当我在CreateFile(HID_DEVICE_NAME,...)提供的句柄上执行ReadFile/WriteFile时,在HID操作方面会发生什么?

它是否向HID设备(在我的情况下为USB)发出直接写入/读取请求,还是将其转换为基础驱动程序中的某个位置以读取具有该ID的最后缓存的HID报告?

ReadFile调用:

syncDevice.OutputReportBuffer[0] = 0;
syncDevice.OutputReportBuffer[1] = reportID;
HANDLE writeHandle = CreateFile(pDevice->DevicePath, GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
HANDLE readHandle = CreateFile(pDevice->DevicePath, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
success = WriteFile(writeHandle, (void*) syncDevice.OutputReportBuffer, syncDevice.Caps.OutputReportByteLength, &bytecnt, 0);
success = ReadFile(readHandle, syncDevice.InputReportBuffer, syncDevice.Caps.InputReportByteLength, &bytecnt, 0);

最佳答案

USB Complete by Jan Axelson:

08-27 01:09