starmoon
驱动小牛
驱动小牛
  • 注册日期2001-04-28
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2085回复:9

句柄打开时拨掉USB设备的问题

楼主#
更多 发布于:2001-09-04 15:13
我一个驱动, 用的老式 device name + symble link 的方式和应用程序通讯的。

现在发现一个问题, 就是如果应用程序已经用 CreateFile 打开了一个到设备的句柄, 这时拨掉USB设备。

这时再插入USB设备, 就再也无法用那个symble link 了。
但驱动运行正常, 只是无法再用 CreateFile 连接上了。

估计原因是因为 Symble link 正在使用时, 驱动卸载时没有成功删除 Symble Link.

有谁有过类似的经验吗?
lcy
lcy
驱动牛犊
驱动牛犊
  • 注册日期2001-07-17
  • 最后登录2005-05-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-09-05 19:22
我也碰到这个问题了,而且只要你不closefile,相应驱动程序例程都在内核运行,为此我找了Cypress公司的一些原代码,它们是这样做的。
CreateFile();
然后相应的IO操作
CloseFile();
这样的话,当你拔掉设备后,驱动程序的UnLoad()例程,就会工作,把你的 symlink删除掉(当然这个例程里边你要有删除symlink的语句)。
starmoon
驱动小牛
驱动小牛
  • 注册日期2001-04-28
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-09-06 01:19
这种一打开马上就关掉当然没什么问题了。

但是如果打开了不关掉, 就是在打开过程中拨掉了设备, CloseHandle() 也不起作用了。
4qiuxh
驱动小牛
驱动小牛
  • 注册日期2002-11-27
  • 最后登录2008-04-14
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-07-10 10:55
呵呵,我也遇到这样的问题,而且如果应用程序读写数据失败的时候,再次启动应用程序,读写仍然失败,只有重新拔掉usb设备,再启动应用程序了。
swf2003
驱动中牛
驱动中牛
  • 注册日期2003-02-13
  • 最后登录2011-10-28
  • 粉丝1
  • 关注0
  • 积分4分
  • 威望22点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-07-10 14:22
驱动中对热插拔相应没有做好。
你的认可是对我最大的鼓励!
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-07-10 15:27
具体在驱动程序的那个部分处理这些热插拔的问题呢,在remove_device?
funny
驱动小牛
驱动小牛
  • 注册日期2003-04-17
  • 最后登录2021-07-30
  • 粉丝0
  • 关注0
  • 积分1012分
  • 威望178点
  • 贡献值0点
  • 好评度123点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2004-09-15 11:40
你的问题解决了没有,我也遇到了这样的问题。
驱动现在,成就未来
jarod_jy
驱动牛犊
驱动牛犊
  • 注册日期2006-12-27
  • 最后登录2012-06-17
  • 粉丝0
  • 关注0
  • 积分332分
  • 威望35点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-03-01 15:25
我也是遇到这个问题,createfile - closehandle的方法只在应用层解决的,但解决的不彻底,我想在驱动层来解决不知道能否解决?
耕一块贫瘠的土地
wjt810907
驱动中牛
驱动中牛
  • 注册日期2004-08-18
  • 最后登录2011-04-16
  • 粉丝0
  • 关注0
  • 积分86分
  • 威望409点
  • 贡献值1点
  • 好评度402点
  • 原创分2分
  • 专家分0分
8楼#
发布于:2007-03-01 15:51
我也遇到过,偶尔还会出现蓝苹,事实说明内核以为设备一直存在,我想在驱动中添减意外删除是个好办法,cypress的GPD没有实现这个
mcu_boy
jarod_jy
驱动牛犊
驱动牛犊
  • 注册日期2006-12-27
  • 最后登录2012-06-17
  • 粉丝0
  • 关注0
  • 积分332分
  • 威望35点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-03-01 16:32
在驱动中添加意外删除函数,在这个函数中具体要作那些事呢,当设备正在使用时驱动不能强行关闭设备啊
耕一块贫瘠的土地
游客

返回顶部