阅读:1240回复:1
CreateFile的疑问?有大虾指点么?(别以为这个题目很简单)
我在WindowsXP下用CreateFile打开一个USB-BOT的设备,应客户要求,将参数设置成独占打开,但却发现函数返回正确句柄后,其它进程同样可以打开,也就是说设备打开成功了,但独占设置失败了。要说明的是,调用这个函数时使用的路径是用SetupAPI枚举DeviceInterface得到的。
为了证明我的操作是否错误,我作了下面的测试,用相同的参数调用CreateFile去打开一个磁盘文件,发现独占打开一个磁盘文件可以成功,表现是在同一进程中再次打开时,返回成功,但句柄值跟先打开的句柄值是一致的,而另一个进程就无法再打开了。而在我打开USB设备时,使用将参数设置成独占方式,多少个进程都可以打开,而且,同一个进程打开多次时,每一次返回的句柄都是不一样的。 为了证明不是我的设备的原因,我拿了一个U盘进行同样的打开测试,发现效果相同。 参阅了很多网上网下以及MSDN中对于CreateFile的说明,都没有说到有这个特殊现象,没说到什么情况下独占方式会失败,也没说到同进程中独占打开是可以进行多次的,只是句柄相同,所以只能关闭一次,如果关闭两次会抛出异常。 有没有哪会经验丰富的XD遇到过这个问题?到底是什么原因?多谢指点! 我现成已经放弃独占打开了,准备考虑其它方式达到相同的应用目的---哀莫大于心死啊! |
|
|
沙发#
发布于:2007-09-20 15:07
用户被禁言,该主题自动屏蔽! |
|