我编写了一个Hid库,可以对Hid USB设备进行写入和读取 . 它运作良好 . 我使用CreateFile创建一个像这样的安全句柄:
_ReadSafeFileHandle = APICalls.CreateFile(DeviceInformation.DevicePath, APICalls.GenericRead | APICalls.GenericWrite, APICalls.FileShareRead | APICalls.FileShareWrite, IntPtr.Zero, APICalls.OpenExisting, 0, IntPtr.Zero);
我可以用这些流读/写:
_ReadFileStream = new FileStream(_ReadSafeFileHandle, FileAccess.ReadWrite, _HidCollectionCapabilities.OutputReportByteLength, false);
_WriteFileStream = new FileStream(_WriteSafeFileHandle, FileAccess.ReadWrite, _HidCollectionCapabilities.InputReportByteLength, false);
但是,我连接的设备已从Hid访问切换到香草USB . 我已经切换到通过其USB ID而不是其Hid Id访问设备 . 现在,当我尝试写入流时,我得到一个错误,说“功能不正确” . 我无法写入USB设备 . 玩了一会儿后,我有时能够在没有错误的情况下写入流,但我确信没有USB传输正在进行 . 我正在使用Usbpcap来嗅探转移,它根本看不到任何转移 .
Do you have advice on the differences between talking to a vanilla USB device vs. a Hid device?
_WriteFileStream.CanWrite返回true . 如果我在CreateFile调用中放置了错误的设备路径,则会出现错误 .