CreateFile 另一个程序正在使用此文件,进程无法访问

在Windows环境下,需要读取某个已经由其他程序打开的文件。
按下面的方式调用
CreateFile(
fnam, /* lpFileName */
GENERIC_READ, /* dwDesiredAccess */
FILE_SHARE_READ, /* dwShareMode */
NULL, /* lpSecurityAttributes */
OPEN_EXISTING, /* dwCreationDisposition */
FILE_ATTRIBUTE_READONLY, /* dwFlagsAndAttributes */
NULL)
函数报错,另一个程序正在使用此文件,进程无法访问。
如果我非要打开其他程序正在使用的文件,请问该如何处理?

你想干嘛呀。如果系统进程的某些文件比如注册表的SAM文件等等都是被系统独占打开的,你要能用CreateFile函数轻松打开这些文件那系统的安全成什么了?明确告诉你想要用这个函数打开被独占的文件想都别想了。如此重量级的函数微软肯定对它的安全性做了严密的测试,所以放弃吧。追问

有一个需要注册的软件实现了这个功能。
没有实现不了的功能,只有想象不到的理由。

追答

那绝对不是单单用这一个函数就想做这样的事情。要说办法也有,从内存中复制文件映像,拷贝文件句柄等。这些都需要编写驱动。一个简单的CreateFIle想做这些事情不太可能

追问

windows驱动编程书籍,求推荐

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-25
你可以在提前检测文件是否被占用,如果占用
你可以选择在等待 或者关闭暂用

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网