阅读:1831回复:13
请问,可以在 IRP_MJ_READ 中读取 USB 键盘的按键信息吗?
我写了个upperfilter,已经可以读取PS/2的按键信息,并能和应用程序通信了,但是USB的按键信息却没有办法得到(可能是我的方法不对吧),请问,可以在里面的 IRP_MJ_READ 中读取 USB 键盘的按键信息(按键的码值)吗?
如果可以,怎么读呢? 如果不可以,那用什么方法啊。 我已经把驱动网论坛的帖子翻了个遍,真的没有发现相似的帖子,望各位 不要嫌 分少啊。 |
|
沙发#
发布于:2004-07-21 11:00
我发现有大多数键用我原来的 UpperFilter就可以得到按键信息,而像电源管理,多媒体等按键却没有办法得到,我想了很多办法都没有效果,望有这方面经验的兄弟指教,要怎样才能在upperfilter中得到USB键盘的多媒体键的按键信息呢?
|
|
板凳#
发布于:2004-07-21 17:18
怎么没人搭理我哦?
|
|
地板#
发布于:2004-07-21 21:22
我写了个upperfilter,已经可以读取PS/2的按键信息,并能和应用程序通信了,但是USB的按键信息却没有办法得到(可能是我的方法不对吧),请问,可以在里面的 IRP_MJ_READ 中读取 USB 键盘的按键信息(按键的码值)吗? 我的实力不强,只是随便说说:我在应用程序可以直接读到按键值。用的是ReadFile实现的 |
|
|
地下室#
发布于:2004-07-21 22:10
谢谢关注。
很想了解你是如何得到的? 但是我还有个问题,我现在要实现的目标是当按了么个多媒体键的时候定制它的行为,但是用 APP 来读的话那什么时候读,开线程不间断读取吗? [编辑 - 7/21/04 by Deauty] |
|
5楼#
发布于:2004-07-22 14:22
后来听别人说是因为 USB 键盘的 多媒体键和电源管理键 被分成不同的模块处理的,下面是原话,
> on a (usb) hid device, the power and the media keys are in separate top > level collections and are enumerated as separate devices. you can put a > filter on either of these and change the usages, but only with the usage > page. ie you can make the media keys behave like other media keys, but you > cannot make a media key behave like a keyboard press (for instance mapping > volume up to the letter 'a' is not possible). > 给点建议吧,各位。怎么搞,关键是这个过滤驱动怎么挂上去呢?通过注册表可以挂上去吗? |
|
6楼#
发布于:2004-07-23 08:54
高手呢?
|
|
7楼#
发布于:2004-07-23 11:04
谢谢关注。 不是十分清楚你想实现的结果,我现在是用的usb光电鼠标来读取数据的,键盘和鼠标不都是HID的。我想是差不多的。 HID设备只有用控制端点,所以你在你的vc程序中,直接打开你的设备句柄,根据BusHound读取的数据,来ReadFile数据就可以了。 我可能说得不准确,有什么问题,包含! |
|
|
8楼#
发布于:2004-07-23 11:11
多谢楼上的这位仁兄,我试试看吧,
其时我想用的方法是写个过滤驱动来 修改 XP下USB键盘多媒体键的默认行为,就是当按下WWW Home时我要实现 打开我的电脑 这样的功能 |
|
9楼#
发布于:2004-07-23 11:34
多谢楼上的这位仁兄,我试试看吧, 这样呀,我的没有这么做,不好意思! 不过最近我也想写一个过滤程序。 但是我对驱动程序不是很熟练 写过滤程序,有什么不同,有什么书介绍一下! 谢谢 |
|
|
10楼#
发布于:2004-07-23 15:17
Walter Oney 的Programming The Microsoft Windows Driver Modol第二版有一章专门讲过滤驱动的,驱动我也才开始搞没有入门厄,好多问题,头都大了,
|
|
11楼#
发布于:2004-07-23 21:29
要写个hid的lowfilter
看一下ddk中的例子src\input\kbfilter |
|
12楼#
发布于:2004-07-24 02:00
后来听别人说是因为 USB 键盘的 多媒体键和电源管理键 被分成不同的模块处理的,下面是原话, 通过inf文件修改注册表值为upperfilter或lowerfilter就可以挂接了,一般还需要拷贝驱动栈上的其他驱动,比如hidclass,hidusb等 |
|
|
13楼#
发布于:2004-07-24 07:39
能否把码发过来看一下,mercy@21cn.com
|
|
|