neworcom
驱动牛犊
驱动牛犊
  • 注册日期2004-06-14
  • 最后登录2009-08-26
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:960回复:1

应用程序与驱动通讯引起了打开设备失败!怎么办?

楼主#
更多 发布于:2004-07-13 16:43
我按照TigerZD斑竹的<<怎样在驱动层和应用层建立准消息机制>>那样做,确实能实现应用程序和驱动间建立消息,比如设备意外删除,驱动能告知应用,但是当设备在次插入时没法打开设备句柄!直到重起.

是不是拔掉设备后没有关掉设备句柄引起?我试着CloseHandle还是不行呢!
windrv
驱动牛犊
驱动牛犊
  • 注册日期2004-07-05
  • 最后登录2004-07-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-14 09:52
1.USB设备意外删除时,必须通知应用程序关掉对应的句柄。否则在Windows 2K/XP中,此设备对象并没有在系统中删除。另外如果有其它的程序在引用该设备对象和驱动程序还有没完成的IRP,都会引起设备对象不被删除。

2. 在设备再次插入时,创建设备对象(IoCreateDevice, IoCreateSymbolicLink)有没有检查重名。

3. 分析你的问题应分两步:1) 确定设备意外删除时,设备对象已从系统中删除。这可以看“设备管理器”或用DebugView、DriverMonitor之类的工具跟踪调试信息。 2) 确定设备再次插入时能正确创建新的设备对象。同样可以用“设备管理器”和DebugView来确定。
游客

返回顶部