yanquijiang
驱动牛犊
驱动牛犊
  • 注册日期2002-07-17
  • 最后登录2005-04-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3436回复:5

HID键盘,拦截consumer control

楼主#
更多 发布于:2003-06-04 23:05
大家好:事情是这样的,我有一个usb keyboard,公司的任务是如何拦截并且吃掉一些multimedia keys(consumer control), 系统hidusb枚举到这个键盘有四个top-level collection,并且为这四个top-level collection创建了4个pdo.其中一个对应HID consumer.我想为这个pdo加个filter来过滤我们有兴趣的consumer contol.我的filter很简单,就是在收到read irp时挂一个completion routine.在completion routine中来监测数据。我发现系统找到了我的驱动,也成功的完成了driverentry.可是,我的驱动总是不能成功的加载。而且,我注意到adddevice根本就没有被调用。
 
  我的inf文件中只是简单在enum项中加入一个lowerfilter.
  还有,我没有安装原来系统中有的hidserv.exe.是不是由于这个原因,才没有成功?希望有经验的高手多多指教,谢谢。

最新喜欢:

hartonoharton...
swf2003
驱动中牛
驱动中牛
  • 注册日期2003-02-13
  • 最后登录2011-10-28
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-05 09:56
你的 inf 可能写的不对。
你的认可是对我最大的鼓励!
yanquijiang
驱动牛犊
驱动牛犊
  • 注册日期2002-07-17
  • 最后登录2005-04-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-05 10:58
这是我的inf文件,
[Version]
Signature=\"$CHICAGO$\"
Class=HIDClass
ClassGuid={745a17a0-74d3-11d0-b6fe-00a0c90f57da}
provider=\"Company\"
LayoutFile=layout.inf, layout1.inf, layout2.inf
DriverVer=4/6/2003,1.00.0001.1

[Manufacturer]
\"Company\"=Company


;===============================================================


[Company]
\"consumer control filter\"=HIDSystemConsumer,HID\\Vid_xxxx&Pid_xxxx&Rev_xxxx&MI_01&Col02,HID\\Vid_xxxx&Pid_xxxx&MI_01,HID_DEVICE_SYSTEM_CONSUMER

[DestinationDirs]
HidServ.Copy = 10,system32
consumer.Copy = 12


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;  Install section for HID Consumer Control devices  ;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[HIDSystemConsumer.NTx86]
CopyFiles=HidServ.Copy,consumer.Copy
AddReg=HidServ.AddReg


[HIDSystemConsumer.NTx86.Services]
AddService=Consumer,,Consumer.Add.Services

[Consumer.Add.Services]
DisplayName = \"Consumer Control PDO filter\"
ServiceType = 1
StartType = 3
ErrorControl    = 0
ServiceBinary   = %12%\\Consumer.sys

[HIDSystemConsumer.NTx86.HW]
AddReg = Consumer.HW.AddReg


[Consumer.HW.AddReg]
HKR,,\"Lowerfilters\",0x00010000,\"Consumer\"



[HidServ.Copy]
hidserv.exe,,,0x00000040


[consumer.Copy]
Consumer.sys

[HidServ.AddReg]
HKLM,%RunOnce%,HidServ,,\"hidserv.exe /install\"


[ControlFlags]
ExcludeFromSelect = *


[SourceDisksFiles]
consumer.sys=1


[Strings]
;Non-localized strings
………………..
…………………



我觉得并没有错误,而且DriverEntry已经被调用了,但windows给的错误信息是:can not load the driver for device(code 31).我觉得好像是这个filter的DriverEntry要做一些额外的工作,好像Onay的第二版里有介绍,不知那位以前做过这方面的内容,还请指教,谢谢。
yanquijiang
驱动牛犊
驱动牛犊
  • 注册日期2002-07-17
  • 最后登录2005-04-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-05 16:38
各位好,现在驱动已能正确加载。而且,每当按consumer control key 时,我的read completion routine 都会被调用。但是,我的read completion routine中得到的irp,不知道如何得到键盘的信息。我查看了read irp的域,没有发现和每个键相关的信息。谢谢大家了,很着急,希望高手帮帮看看。
yanquijiang
驱动牛犊
驱动牛犊
  • 注册日期2002-07-17
  • 最后登录2005-04-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-06-06 00:01
通过观察,我发现在没有加载我的驱动时,hidserv.exe能够读到consumer autio control.但是我的驱动加载后,读到的数据都是0,不知为什么?我的read dispatch只是简单的挂了一个completion.除此外什么就是向下传???不知道为什么就只能读到0。
难道没有人做过类似的吗???是不是太弱智了?
yanquijiang
驱动牛犊
驱动牛犊
  • 注册日期2002-07-17
  • 最后登录2005-04-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-06-06 18:14
不好意思,解决了。分我就不加了。其实挺简单的。
游客

返回顶部