遵守规则
驱动牛犊
驱动牛犊
  • 注册日期2006-06-03
  • 最后登录2007-12-27
  • 粉丝0
  • 关注0
  • 积分330分
  • 威望34点
  • 贡献值0点
  • 好评度33点
  • 原创分0分
  • 专家分0分
阅读:1240回复:1

CreateFile的疑问?有大虾指点么?(别以为这个题目很简单)

楼主#
更多 发布于:2007-09-18 15:58
我在WindowsXP下用CreateFile打开一个USB-BOT的设备,应客户要求,将参数设置成独占打开,但却发现函数返回正确句柄后,其它进程同样可以打开,也就是说设备打开成功了,但独占设置失败了。要说明的是,调用这个函数时使用的路径是用SetupAPI枚举DeviceInterface得到的。

为了证明我的操作是否错误,我作了下面的测试,用相同的参数调用CreateFile去打开一个磁盘文件,发现独占打开一个磁盘文件可以成功,表现是在同一进程中再次打开时,返回成功,但句柄值跟先打开的句柄值是一致的,而另一个进程就无法再打开了。而在我打开USB设备时,使用将参数设置成独占方式,多少个进程都可以打开,而且,同一个进程打开多次时,每一次返回的句柄都是不一样的。

为了证明不是我的设备的原因,我拿了一个U盘进行同样的打开测试,发现效果相同。

参阅了很多网上网下以及MSDN中对于CreateFile的说明,都没有说到有这个特殊现象,没说到什么情况下独占方式会失败,也没说到同进程中独占打开是可以进行多次的,只是句柄相同,所以只能关闭一次,如果关闭两次会抛出异常。

有没有哪会经验丰富的XD遇到过这个问题?到底是什么原因?多谢指点!

我现成已经放弃独占打开了,准备考虑其它方式达到相同的应用目的---哀莫大于心死啊!
谁不遵守规则,规则就会惩罚他,迟早的事
gutian98
禁止发言
禁止发言
  • 注册日期2003-01-12
  • 最后登录2016-12-11
  • 粉丝4
  • 关注2
  • 积分760分
  • 威望8026点
  • 贡献值1点
  • 好评度364点
  • 原创分0分
  • 专家分21分
  • 金点子奖
  • 社区居民
沙发#
发布于:2007-09-20 15:07
用户被禁言,该主题自动屏蔽!
游客

返回顶部