jarod_jy
驱动牛犊
驱动牛犊
  • 注册日期2006-12-27
  • 最后登录2012-06-17
  • 粉丝0
  • 关注0
  • 积分332分
  • 威望35点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
阅读:3731回复:3

为什么使用createfile打开USB设备后拔插USB接口,不需在用createfile打开设备即可使用。

楼主#
更多 发布于:2007-11-09 15:35
当使用createfile打开USB设备后,拔插USB接口,正常使用时需要再次用createfile打开USB设备才能操作设备,但我遇到一个USB读写器,它在上述情况下不需要再次用createfile打开设备即可使用,仍使用原来createfile产生的句柄就可以操作设备,不知道功能是如何实现的,我正要做这样一个功能,各位大侠给提个思路。
耕一块贫瘠的土地
jarod_jy
驱动牛犊
驱动牛犊
  • 注册日期2006-12-27
  • 最后登录2012-06-17
  • 粉丝0
  • 关注0
  • 积分332分
  • 威望35点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-11-13 14:35
Re:为什么使用createfile打开USB设备后拔插USB接口,不需在用createf
顶一下。
需要说明的是,那个USB设备是一个HID设备,厂家只提供了操作设备的动态库,驱动使用微软的hid驱动,我用IRPTrace工具跟踪,发现用createfile打开设备后,断开USB设备并再次连接USB设备,动态库将自动调用createfile打开设备,并且前后两次createfile得到的句柄相同(多次断开再连接USB设备后句柄仍然相同),不知道那个动态库中如何实现这个功能的?
耕一块贫瘠的土地
ylinux
驱动牛犊
驱动牛犊
  • 注册日期2007-10-09
  • 最后登录2009-02-25
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望56点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-11-14 10:28
这样用应该不可靠吧
       理论上设备拔出后,对应的句柄都是失效.但是有可能系统还来不及处理那些失效的句柄.
你试一下把设备拔出,插入到别的USB口上,或者把设备拔出,插入别的USB设备,再插入读写器.
看一下句柄还能不能用.
jarod_jy
驱动牛犊
驱动牛犊
  • 注册日期2006-12-27
  • 最后登录2012-06-17
  • 粉丝0
  • 关注0
  • 积分332分
  • 威望35点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-11-14 13:05
Re:为什么使用createfile打开USB设备后拔插USB接口,不需在用createf
我现在的USB设备是一个IC卡读写设备,我试过当设备拔出时,用IRPTrace跟踪,设备的动态库中使用CloseHandle()自动关掉了句柄,设备再插入时,动态库自动使用createfile()打开设备(在此之前设备已经打开,若设备没打开的情况下则不会再自动createfile设备),并且打开设备得到的句柄值不会改变(多次拔插设备得到的句柄仍然相同),我想这种情况下系统已经及时处理了句柄,我现在不明白为什么每次用createfile打开设备得到的句柄是相同的,正常情况下每次createfile打开设备得到的句柄应该是由系统随机分配的,句柄应该是不相同的啊?困惑中.......
耕一块贫瘠的土地
游客

返回顶部