写哪样的驱动,可以区分处理笔记本的USB Mouse和触摸板的数据?

zhutaime   2009-1-2 11:26 楼主
应该是Filter Driver吧?
可WDK中只看到PS/2的Sample,像笔记本上的USB HID Mouse是否就不支援了呢?
有人指点下不?
3KS

回复评论 (8)

DOS下usb KB&mouse是通过BIOS的60/64 IO trap的技术来实现KB&mouse的模拟的(通过USB的SMI处理的device收发的data,并且模拟出键盘与鼠标的IRQ)
而在windows下,USB interface的所有硬体动作(event)都会首先由USB driver接受并handle,然后再细分为何种type的data transfer(mass storage,KB,MOUSE...),再接下来就是usb driver会将sort后的data以IO request的形式send给相应的handler(某支具体的device driver,如果是USB mouse,那么就是这个mouse的driver,driver在install的时候会向windows注册为此类event的handler)
如果你还想要更详细的资料,可以搜索在microsoft的网站上搜索How to disable the keyboard Sleep button with a filter driver,可以找到小段sample code,希望对你会有所帮助
点赞  2009-1-2 14:31
微软网上的这个例子,是指的HID 键盘吧。 如果是HID的USB Mouse有没有现成的例子啊?
点赞  2009-1-3 13:53
帮顶。
点赞  2009-1-4 11:09
http://dlc.sun.com/osol/netvirt/downloads/20070214/netvirt_0207-src-20070214.tar.bz2上面的链接是一段USB human interface(The HID driver is a software driver which acts as a class
* driver for USB human input devices like keyboard, mouse,
* joystick etc and provides the class-specific interfaces
* between these client driver modules and the Universal Serial
* Bus Driver(USBA).
)的sample code,你参考下好了,要不是100分,我一般不拿出来share的
点赞  2009-1-5 09:51
帮顶。
点赞  2009-1-5 11:20
4楼的兄弟,你那是opensolaris的吧,楼主问的是Filter Driver,好像不一样吧
点赞  2009-1-5 11:24
大致知道怎么作了,就是还想在自己的Filter Driver中对其它Driver下一些IOCTL指令。 
应该是只有用IoGetDeviceObjectPointer去获得那个Driver Pointer,然后再下IRP吧。
可是我用IoGetDeviceObjectPointer时,老是失败,错误为STATUS_ACCESS_DENIED
点赞  2009-1-6 16:45
提示: 作者被禁止或删除 内容自动屏蔽
点赞  2009-1-20 11:45
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复