我正在通过ReadDirectoryChangesW
同步调用来查看目录。CreateFile
当有新文件可用时,我尝试使用GENERIC_READ
and立即访问它FILE_SHARE_READ
,但这给了我ERROR_SHARING_VIOLATION
. 在我尝试读取文件时,将文件放入监视目录的过程尚未完成写入。
有没有办法可靠地等待文件可供读取?我可以将该方法放入如下所示的循环中,但我希望有更好的方法。
while ((hFile = CreateFile (path, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL)) == INVALID_HANDLE_VALUE)
{
if (GetLastError() == ERROR_SHARING_VIOLATION)
Sleep (500);
else
break; // some other error occurred
}
if (hFile == INVALID_HANDLE_VALUE)
{
// deal with other error
return 0;
}
ReadFile (...);