为了不让新人走弯路,我把我的心得写出来:
读写HID设备步骤如下:
1.得到设备句柄
2.对设备进行遍历
3.找出设备的符号链接
4.readfile/writefile进行读写
借助的工具:DDK里面的USBView,如果不知道怎么编译的,用Build -d命令,用USBView可以得到设备的PID,VID,利用这两个值搜索注册表,即可直接得到第三步的符号链接跳到第四步(我可是花了两个月的时间用代码得到的,呜呜呜呜) ,然后直接读写
不知道我说得对不对,因为没有实现读写,继续研究!
读写比较简单,就是调用WriteFile和ReadFile这两个API函数。
不同的用户要读写的要求都不一样,所以读写这段就省略了。
发送报表:
假设OutputReport的长度为outLength.
CHAR OutputReport[outLength];
//The first byte is the report number.
OutputReport[0]=0;//这句很重要
memcpy(OutputReport+1,“报表内容”,outLength-1);
WriteFile
(DeviceHandle,
OutputReport,
Capabilities.OutputReportByteLength,
BytesWritten,
NULL);
读取报表:
ReadFile
(ReadHandle,
InputReport,
Capabilities.InputReportByteLength,
NumberOfBytesRead,
NULL;
然后可以用for语句逐个提取InputReport里面的字符即可。
千万千万要注意的是,要从InputReport[1]开始提取。
如果从InputReport[0]开始,将会是空白!!