xzx33
驱动牛犊
驱动牛犊
  • 注册日期2004-10-03
  • 最后登录2008-05-18
  • 粉丝0
  • 关注0
  • 积分275分
  • 威望32点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
阅读:2275回复:8

hid应用程序开发

楼主#
更多 发布于:2005-08-08 18:57
  有2个问题:
1。我开发一个HID的应用程序,用鼠标作为USB设备进行试验。得到鼠标的路径后,用CREATFILE打开设备获得鼠标的句柄。
当设置成下面的参数时,可以得到鼠标的句柄,但不能用READFILE对鼠标进行读操作:
HANDLE hCom = CreateFile((LPCSTR)detailData->DevicePath,                            0,
                                                 FILE_SHARE_READ|FILE_SHARE_WRITE,
                                                 (LPSECURITY_ATTRIBUTES),
       NULL,
       OPEN_EXISTING,
                                                 FILE_ATTRIBUTE_NORMAL,NULL);
我把参数改为:
HANDLE hCom = CreateFile((LPCSTR)detailData->DevicePath,
              GENERIC_READ|GENERIC_WRITE,
                                                 FILE_SHARE_READ|FILE_SHARE_WRITE,
                                                 (LPSECURITY_ATTRIBUTES),
       NULL,
       OPEN_EXISTING,
                                                 FILE_ATTRIBUTE_NORMAL,NULL);
结果不能打开鼠标。
2。对于采用中断传输的设备,应用程序怎么实时得到中断设备传送过来的数据。中端传输方式驱动程序应该定时的查询中断端口,并获得端口数据,驱动程序怎么把接受到的数据传给应用程序,采用中断的方式?那位有代码,能不能给小弟一份!
那位大虾有这方面的经验,请赐教1谢谢!
联系方式:xzx33@163.com
xzx33
驱动牛犊
驱动牛犊
  • 注册日期2004-10-03
  • 最后登录2008-05-18
  • 粉丝0
  • 关注0
  • 积分275分
  • 威望32点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-08-08 19:13
还有个问题
如果我不能用READFILE对鼠标和键盘操作,那我用那个函数得到鼠标(键盘)的报表呢?比如我想把鼠标的坐标信息显示在应用程序上!
联系方式:xzx33@163.com
szyuwei
驱动小牛
驱动小牛
  • 注册日期2002-11-08
  • 最后登录2019-04-08
  • 粉丝0
  • 关注0
  • 积分218分
  • 威望52点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2005-08-09 09:38
从应用层接收不可以吗?
1、对于标准的鼠标、键盘必须要做驱动才可以的;
2、可以把鼠标、键盘做与非标的,通过上面你说的方式处理;
QQ:262286607 MSN:szyuwei@msn.com TEL:13316539282
xzx33
驱动牛犊
驱动牛犊
  • 注册日期2004-10-03
  • 最后登录2008-05-18
  • 粉丝0
  • 关注0
  • 积分275分
  • 威望32点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-08-09 18:56
驱动是有的,系统本身具有HID设备的驱动,不需要用户编写,应用程序好像不能通过READFILE、WRITEFILE对鼠标和键盘读写,是不是被系统把进程占用了?
联系方式:xzx33@163.com
szyuwei
驱动小牛
驱动小牛
  • 注册日期2002-11-08
  • 最后登录2019-04-08
  • 粉丝0
  • 关注0
  • 积分218分
  • 威望52点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2005-08-10 09:42
从应用层处理键盘鼠标消息,不能直接读写数据的;
驱动是为键盘以及鼠标自己做一个驱动不用标准的驱动,用标准的驱动是不可以的;
可以自己做固件,能保证通过READFILE、WRITEFILE对鼠标和键盘读写.
QQ:262286607 MSN:szyuwei@msn.com TEL:13316539282
xzx33
驱动牛犊
驱动牛犊
  • 注册日期2004-10-03
  • 最后登录2008-05-18
  • 粉丝0
  • 关注0
  • 积分275分
  • 威望32点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-08-10 21:43
谢谢你的回答!还是有问题:
  WIN98以上系统是支持HID设备的,也就是说按照HID规范设计的USB设备在98和2000下是不用编写驱动程序,就可以被系统识别。
  READFILE和WRITEFILE是应用程序对设备进行读写的函数,这两个函数向USB功能驱动程序发送IRP,功能驱动程序响应IRP,并形成URB传送给USB总线驱动程序,总线驱动程序完成对硬件相应的操作!所以说READFILE和WRITEFILE并没有和固件发生关系,固件不过是响应USB、HID请求,并形成HID报表传送给USB主机,应该不影响READFILE和WRITEFILE操作.
联系方式:xzx33@163.com
szyuwei
驱动小牛
驱动小牛
  • 注册日期2002-11-08
  • 最后登录2019-04-08
  • 粉丝0
  • 关注0
  • 积分218分
  • 威望52点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2005-08-11 11:30
READFILE和WRITEFILE肯定与固件有关系,比如发送数据的长度
QQ:262286607 MSN:szyuwei@msn.com TEL:13316539282
tase
驱动小牛
驱动小牛
  • 注册日期2002-03-10
  • 最后登录2015-01-23
  • 粉丝0
  • 关注0
  • 积分494分
  • 威望74点
  • 贡献值0点
  • 好评度53点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-01-04 10:48
问题的关键 是你用鼠标来测试, 在WIN98 以上, HID的鼠标是被系统独占打开的,因此你不能打开
--- TASE ---
zhangjianming
驱动牛犊
驱动牛犊
  • 注册日期2007-01-20
  • 最后登录2007-03-12
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-01-22 10:17
usb的键盘和鼠标在win2k以上的操作系统中由系统独占,应用程序可已访问Feature数据,这个在usb网站的FAQ中给出了明确的答复。
游客

返回顶部