圈圈.第10章.过滤驱动_实验记录(20181218)

1、环境

  1.1、驱动编译:XP(VMWARE)

  1.2、Keil:Win7x64

  1.2、实验机:XP(笔记本[ 真实物理机 ])

2、代码:

  2.1、过滤驱动使用的是 第10章 的代码

  2.2、(1)USB模块的代码 用的是 第4章 的代码(我使用 未带鼠标功能的代码:[ UsbKeyboard__ZC_forChapter10 ])

    (2)访问HID设备的应用程序是 第5章 的代码(我使用的是 [ MyUsbHidTestApp__ZC_forChapter10 ])

3、疑问:

 3.1、关于GUID,搜索了 圈圈 的源码,貌似里面没有指定 GUID的部分... 那么 XP中注册表里面的 GUID({4D36E96F-E325-11CE-BFC1-08002BE10318} 和 {745A17A0-74D3-11D0-B6FE-00A0C90F57DA})是怎么回事?是固定的吗?

  ZC:比较了一下,貌似 HKLM\SYSTEM\CurrentControlSet\Enum\HID 中的 项:
  ZC:  如果 "Class"为"Mouse",则 "Driver"就是"{4D36E96F-E325-11CE-BFC1-08002BE10318}"
  ZC:  若"Class"为"HIDClass",则 "Driver"就是"{745A17A0-74D3-11D0-B6FE-00A0C90F57DA}"
  ZC:  可能就是固定的...

 3.2、第4章的代码 说是 "USB键盘"为何 HKLM\SYSTEM\CurrentControlSet\Enum\USB\Vid_8888&Pid_0002 中的 项"2018-07-12"里面的 "Class"是"HIDClass"?而非KeyBoard之类的?就是这么表示的么?没有 "Class"是"KeyBoard"的这种写法么?

 3.3、我的代码(UsbKeyboard__ZC_forChapter10),在 安装到 USB模块后 XP的设备管理器中 没有出现 "键盘-->HID Keyboard Drvice"。

  (1)于是 尝试 使用 圈圈 的随书光盘里面的代码(我复制过来后为"E:\Project_Keil\UsbKeyboard__QQ"),安装后,发现  XP的设备管理器中 出现了 "键盘-->HID Keyboard Drvice",Regedit 中的信息为 "HKLM\SYSTEM\CurrentControlSet\Enum\USB\Vid_8888&Pid_0002\2018-01-01"(这里是∵ 我将源码中的"SerialNumberStringDescriptor" 修改为"2018-01-01"了),截图为:

    ZC:圈圈的代码(UsbKeyboard__QQ) 和 我的代码(UsbKeyboard__ZC_forChapter10),哪里不同?导致我的代码 出不来 "XP设备管理器-->键盘-->HID Keyboard Drvice"? 得 好好的看看

  

    这里的 "Class"为"HIDClass"

   (1.1)、然后 看到 "HKLM\SYSTEM\CurrentControlSet\Enum\HID\Vid_8888&Pid_0002\6&37873005&0&0000",里面的  "Class"为"Keyboard"

4、

5、过滤驱动的 安装过程

  5.1、(PDF.P309[书.P296])

   注意 被安装过滤驱动的设备是一个“USB人体学输入设备”,它的硬件ID开头为USB。
而原来的键盘是由该“USB人体学输入设备”产生的,它的硬件ID以HID开头。
安装过滤驱动之后的“HID兼容设备”也是由这个“USB人体学输入设备”产生的,硬件ID也是以HID开头。
“USB人体学输入设备”和“HID兼容设备”的安装类GUID都为{745A17A0-74D3-11D0-B6FE-00A0C90F57DA},通过硬件ID可以区分它们。
而键盘设备的安装类GUID为{4D36E96F-E325-11CE-BFC1-08002BE10318}可以与“HID兼容设备”。

    ZC:这里 不知道 在说什么... 参看 书中 图10.6.1、图10.6.2。

  5.2、书P292(PDF.P305)最底部:

    另外,由于该过滤驱动修改了报告描述符应用集合的用途,导致最终产生的设备不一样(原来为键盘设备,安装过滤驱动后变成了HID兼容设备),
需要先将原来的驱动卸载掉,然后才能安装过滤驱动;否则系统会不知道这个驱动,还是使用以前的驱动,也就是说,并不会出现新的硬件。
如果这是强行将设备拔下,还会导致系统死机。
安装过滤驱动后还需要重新启动设备,主机才后悔识别到新硬件。

   ZC:怎么个顺序?有点不明白了...

  5.3、步骤:

   (1)、复制驱动文件,就是将驱动文件 复制到 系统目录

   (2)、卸载旧的键盘驱动

    ... ...

 

6、测试

  6.1、没安装 过滤驱动时,操作MyUsbHidTestApp.exe 的现象 (见 PDF.P310 中的解说[书.P297])

开始查找设备 (14:25:27)
设备已经找到 (14:25:27)
读访问打开设备失败 (14:25:27)
写访问打开设备成功 (14:25:27)
无效的读报告句柄,可能是打开设备时失败 (14:25:27)
// ZC: 这一行是我加的,上半部分是 点击按钮"打开设备"时输出的信息,下半部分是 点击按钮"关闭设备"是输出的信息
发送输出报告9字节 (14:25:33)
00 00 00 00 00 00 00 00 00 
发送失败,错误代码:1 (14:25:33)
该设备不支持WriteFile函数。
关闭设备 (14:25:33)

  6.2、

7、

8、

9、

10、

 

posted @ 2018-12-18 09:29  DanPianJi  阅读(383)  评论(0)    收藏  举报