我有一个程序,基本上这是否DeleteFile和FindFirstFile如何交互?
while(1)
FindFirstFile()
if file found
CreateFile()
DeleteFile()
然而,有时的CreateFile报告ERROR_FILE_NOT_FOUND,即使发现用FindFirstFile文件! DeleteFile保证文件在返回后不会显示在目录列表中吗?
我有一个程序,基本上这是否DeleteFile和FindFirstFile如何交互?
while(1)
FindFirstFile()
if file found
CreateFile()
DeleteFile()
然而,有时的CreateFile报告ERROR_FILE_NOT_FOUND,即使发现用FindFirstFile文件! DeleteFile保证文件在返回后不会显示在目录列表中吗?
您可能会遇到Raymond Chen在his blog中描述的问题。
基本上,DeleteFile()
是“种类”异步 - 如果您正在删除的文件上有任何未解决的文件句柄,文件系统只会将该文件标记为“要删除”,但它实际上不会从目录列表直到最后一个打开的句柄关闭 - 即使DeleteFile
返回成功。
那么作为赛门铁克的客户安装了访问时防病毒搜索功能,因此这可能确实是原因。看来我不能指望DeleteFile删除后续文件列表中的文件,而且我必须更改我的程序以应对此问题。 –
所以你试图打开'FindFirstFile'发现的文件,并且有时会失败? –
是的,基本上。它_seems_ FindFirstFile找到一个本来应该是DeleteFile的文件:d。 –
您确定没有其他进程/线程触及/删除有问题的文件吗? – alk