Windows主机端与自定义USBHID设备通信详解

Windows主机端与自定义USBHID设备通信详解

ID:39470069

大小:75.43 KB

页数:8页

时间:2019-07-04

Windows主机端与自定义USBHID设备通信详解_第1页
Windows主机端与自定义USBHID设备通信详解_第2页
Windows主机端与自定义USBHID设备通信详解_第3页
Windows主机端与自定义USBHID设备通信详解_第4页
Windows主机端与自定义USBHID设备通信详解_第5页
资源描述:

《Windows主机端与自定义USBHID设备通信详解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Windows主机端与自定义USBHID设备通信详解说明:-          以下结论都是基于 WindowsXP 系统所得出的,不保证在其他系统的适用性。-          在此讨论的是 HID 自定义设备,对于标准设备,譬如 USB 鼠标和键盘,由于操作系统对其独占,许多操作未必能正确执行。1 .   所使用的典型 WindowsAPICreateFileReadFileWriteFile以下函数是 DDK 的内容:HidD_SetFeatureHidD_GetFeatureHidD_SetO

2、utputReportHidD_GetInputReport其中, CreateFile 用于打开设备; ReadFile 、 HidD_GetFeature 、 HidD_GetInputReport 用于设备到主机方向的数据通信; WriteFile 、HidD_SetFeature 、 HidD_SetOutputReport 用于主机到设备方向的数据通信。鉴于实际应用,后文主要讨论 CreateFile , WriteFile , ReadFile , HidD_SetFeature 四个函数

3、,明白了这四个函数,其它的可以类推之。2 .   几个常见错误       当使用以上 API 时,如果操作失败,调用 GetLastError() 会得到以下常见错误:      6 :          句柄无效      23 :        数据错误(循环冗余码检查)      87 :        参数错误      1784 :     用户提供的 buffer 无效       后文将会详细说明这些错误情况。3.         主机端设备枚举程序流程4.         函数使用说

4、明CreateFile(devDetail->DevicePath,                                        // 设备路径              GENERIC_READ

5、GENERIC_WRITE,                   // 访问方式              FILE_SHARE_READ

6、FILE_SHARE_WRITE,        // 共享模式              NULL,              OPEN_EXIST

7、ING,                                         // 文件不存在时,返回失败              FILE_FLAG_OVERLAPPED,                                // 以重叠(异步)模式打开              NULL);在这里, CreateFile 用于打开 HID 设备,其中设备路径通过函数 SetupDiGetInterfaceDeviceDetail 取得。 CreateFile 有以下几点需要

8、注意:-     访问方式: 如果是系统独占设备,例如鼠标、键盘等等,应将此参数设置为 0 ,否则后续函数操作将失败(譬如 HidD_GetAttributes );也就是说,不能对独占设备进行除了查询以外的任何操作,所以能够使用的函数也是很有限的,下文的一些函数并不一定适合这些设备。在此顺便列出 MSDN 上关于此参数的说明:Ifthisparameteriszero,theapplicationcanqueryfileanddeviceattributeswithoutaccessingthede

9、vice.Thisisusefulifanapplicationwantstodeterminethesizeofafloppydiskdriveandtheformatsitsupportswithoutrequiringafloppyinthedrive.Itcanalsobeusedtotestforthefile'sordirectory'sexistencewithoutopeningitforreadorwriteaccess。-          重叠(异步)模式:此参数并不会在此处表现

10、出明显的意义,它主要是对后续的 WriteFile , ReadFile 有影响。如果这里设置为重叠(异步)模式,那么在使用 WriteFile , ReadFile 时也应该使用重叠(异步)模式,反之亦然。这首先要求 WriteFile , ReadFile 的最后一个参数不能为空( NULL )。否则,便会返回 87 (参数错误)错误号。当然, 87 号错误并不代表就是此参数不正确,更多的信息将在具体讲述这两个函数时指出。此参数为 0 时,代表同步模

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。