matrix
驱动牛犊
驱动牛犊
  • 注册日期2001-07-12
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2535回复:7

如何正确地打开HID键盘

楼主#
更多 发布于:2001-07-12 12:39
各位大虾帮帮忙,我是一个刚开始写Driver的程序员,请问我如何才能正确地打开一个HID键盘?
目前的情况是这样的:
目标:读/写键盘设备,
所以用下面的代码:
   0xffffffff=CreateFile(
"\\?\hid#vid_04b4&pid_5202#7&27000b78&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}",
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL)
大家可以看到,这是  后返回值是无效的句柄,也就是所函数调用失败,此时的GetLastError值是0x00000005,拒绝访问。

但是我改换打开方式如下以后:

   0x00000090=CreateFile(
"\\?\hid#vid_04b4&pid_5202#7&27000b78&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}",
GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL)
又返回值可见打开是成功的,此时的设备是打开了的,此时的GetLastError值是S_OK;
但是,这又一个问题,就是在我后面的程序里面,调用WriteFile(...)函数的时候函数返回了FALSE,此时的GetLastError值是S_OK
以上就是小弟目前的情况,不知倒是什么问题,
还望各位大虾高抬贵手,帮帮忙~!小生这边厢有里了~!
It is matrix world~!
zleo
驱动牛犊
驱动牛犊
  • 注册日期2002-04-08
  • 最后登录2013-03-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-25 16:57
我也遇到同样的问题,在98下没问题,2000下就不行了
期待高手现身。。。
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-07-18 09:58
又长一见识
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
starmoon
驱动小牛
驱动小牛
  • 注册日期2001-04-28
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-07-17 17:29
这个我知道。

你write 出去的buf 长度要和设备的 HID Output report 长度加一, buf[0]要放 report ID.

也就是说长度只能和对应 reportID 指定的一样的。 不能多也不能少。
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-07-15 21:56
[QUOTE]原本由 matrix 发表
[B]不可以吗?我的理解应该是没有问题的阿 [/B][/QUOTE]
我没有做过这类的东东, 只是记得有些设备因为是标准的, Windows直接提供了API调用. 对于HID,因为不清楚, 所以也想问一下, 长长见识.
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
matrix
驱动牛犊
驱动牛犊
  • 注册日期2001-07-12
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-07-15 21:21
不可以吗?我的理解应该是没有问题的阿
It is matrix world~!
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-07-15 21:12
HID设备可以这样通讯吗?
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
matrix
驱动牛犊
驱动牛犊
  • 注册日期2001-07-12
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2001-07-12 12:53
。。。。。
调用WriteFile(...)函数的时候函数返回了FALSE,此时的GetLastError值是S_FALSE
It is matrix world~!
游客

返回顶部