DeleteFile和FindFirstFile如何交互?

Ant*_*hti 5 c winapi

我有一个基本上这样做的程序

while(1)
  FindFirstFile()
  if file found
    CreateFile()
    DeleteFile()
Run Code Online (Sandbox Code Playgroud)

但是,有时CreateFile会报告ERROR_FILE_NOT_FOUND,即使FindFirstFile找到了一个文件!DeleteFile是否保证文件在返回后不会显示在目录列表中?

Jon*_*ter 3

您可能遇到 Raymond Chen 在他的博客中描述的问题。

基本上,DeleteFile()是“某种”异步 - 如果您要删除的文件有任何未完成的文件句柄,文件系统只是将该文件标记为“要删除”,但它实际上不会从目录列表中消失,直到最后一个打开的句柄已关闭 - 即使DeleteFile返回成功。