Deauty
驱动牛犊
驱动牛犊
  • 注册日期2002-11-27
  • 最后登录2008-10-12
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
阅读:1831回复:13

请问,可以在 IRP_MJ_READ 中读取 USB 键盘的按键信息吗?

楼主#
更多 发布于:2004-07-20 18:14
我写了个upperfilter,已经可以读取PS/2的按键信息,并能和应用程序通信了,但是USB的按键信息却没有办法得到(可能是我的方法不对吧),请问,可以在里面的 IRP_MJ_READ 中读取 USB 键盘的按键信息(按键的码值)吗?

如果可以,怎么读呢?
如果不可以,那用什么方法啊。

我已经把驱动网论坛的帖子翻了个遍,真的没有发现相似的帖子,望各位 不要嫌 分少啊。
Deauty
驱动牛犊
驱动牛犊
  • 注册日期2002-11-27
  • 最后登录2008-10-12
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-21 11:00
我发现有大多数键用我原来的 UpperFilter就可以得到按键信息,而像电源管理,多媒体等按键却没有办法得到,我想了很多办法都没有效果,望有这方面经验的兄弟指教,要怎样才能在upperfilter中得到USB键盘的多媒体键的按键信息呢?
Deauty
驱动牛犊
驱动牛犊
  • 注册日期2002-11-27
  • 最后登录2008-10-12
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-21 17:18
怎么没人搭理我哦?
snoopy_dl
驱动牛犊
驱动牛犊
  • 注册日期2003-01-21
  • 最后登录2004-08-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-07-21 21:22
我写了个upperfilter,已经可以读取PS/2的按键信息,并能和应用程序通信了,但是USB的按键信息却没有办法得到(可能是我的方法不对吧),请问,可以在里面的 IRP_MJ_READ 中读取 USB 键盘的按键信息(按键的码值)吗?

如果可以,怎么读呢?
如果不可以,那用什么方法啊。

我已经把驱动网论坛的帖子翻了个遍,真的没有发现相似的帖子,望各位 不要嫌 分少啊。


我的实力不强,只是随便说说:我在应用程序可以直接读到按键值。用的是ReadFile实现的
虚心向各位大虾请教~~~~~~ 争取自身的提高~~~~~~~~~~
Deauty
驱动牛犊
驱动牛犊
  • 注册日期2002-11-27
  • 最后登录2008-10-12
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-07-21 22:10
谢谢关注。

很想了解你是如何得到的?

   但是我还有个问题,我现在要实现的目标是当按了么个多媒体键的时候定制它的行为,但是用 APP 来读的话那什么时候读,开线程不间断读取吗?

[编辑 -  7/21/04 by  Deauty]
Deauty
驱动牛犊
驱动牛犊
  • 注册日期2002-11-27
  • 最后登录2008-10-12
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
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).
>
给点建议吧,各位。怎么搞,关键是这个过滤驱动怎么挂上去呢?通过注册表可以挂上去吗?
Deauty
驱动牛犊
驱动牛犊
  • 注册日期2002-11-27
  • 最后登录2008-10-12
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-07-23 08:54
高手呢?
snoopy_dl
驱动牛犊
驱动牛犊
  • 注册日期2003-01-21
  • 最后登录2004-08-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-07-23 11:04
谢谢关注。

很想了解你是如何得到的?

   但是我还有个问题,我现在要实现的目标是当按了么个多媒体键的时候定制它的行为,但是用 APP 来读的话那什么时候读,开线程不间断读取吗?

[编辑 -  7/21/04 by  Deauty]


不是十分清楚你想实现的结果,我现在是用的usb光电鼠标来读取数据的,键盘和鼠标不都是HID的。我想是差不多的。

HID设备只有用控制端点,所以你在你的vc程序中,直接打开你的设备句柄,根据BusHound读取的数据,来ReadFile数据就可以了。

我可能说得不准确,有什么问题,包含!
虚心向各位大虾请教~~~~~~ 争取自身的提高~~~~~~~~~~
Deauty
驱动牛犊
驱动牛犊
  • 注册日期2002-11-27
  • 最后登录2008-10-12
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-07-23 11:11
多谢楼上的这位仁兄,我试试看吧,
        
      其时我想用的方法是写个过滤驱动来 修改 XP下USB键盘多媒体键的默认行为,就是当按下WWW Home时我要实现 打开我的电脑 这样的功能
snoopy_dl
驱动牛犊
驱动牛犊
  • 注册日期2003-01-21
  • 最后登录2004-08-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-07-23 11:34
多谢楼上的这位仁兄,我试试看吧,
        
      其时我想用的方法是写个过滤驱动来 修改 XP下USB键盘多媒体键的默认行为,就是当按下WWW Home时我要实现 打开我的电脑 这样的功能


这样呀,我的没有这么做,不好意思!
不过最近我也想写一个过滤程序。
但是我对驱动程序不是很熟练
写过滤程序,有什么不同,有什么书介绍一下!
谢谢
虚心向各位大虾请教~~~~~~ 争取自身的提高~~~~~~~~~~
Deauty
驱动牛犊
驱动牛犊
  • 注册日期2002-11-27
  • 最后登录2008-10-12
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望17点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-07-23 15:17
Walter Oney 的Programming The Microsoft Windows Driver Modol第二版有一章专门讲过滤驱动的,驱动我也才开始搞没有入门厄,好多问题,头都大了,
XINGXD
驱动牛犊
驱动牛犊
  • 注册日期2002-03-15
  • 最后登录2010-08-17
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望25点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-07-23 21:29
要写个hid的lowfilter
看一下ddk中的例子src\input\kbfilter
abanwjc
驱动小牛
驱动小牛
  • 注册日期2003-12-17
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望4点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-07-24 02:00
后来听别人说是因为 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).
>
给点建议吧,各位。怎么搞,关键是这个过滤驱动怎么挂上去呢?通过注册表可以挂上去吗?
 


通过inf文件修改注册表值为upperfilter或lowerfilter就可以挂接了,一般还需要拷贝驱动栈上的其他驱动,比如hidclass,hidusb等
“老婆,快搬个凳子出来,一起看火星来的楼主升天啦!”
Owen.Guo
驱动中牛
驱动中牛
  • 注册日期2001-03-30
  • 最后登录2012-03-29
  • 粉丝0
  • 关注1
  • 积分402分
  • 威望260点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-07-24 07:39
能否把码发过来看一下,mercy@21cn.com
Owen.Guo 祝你成功!
游客

返回顶部