是否有人设法弄清楚NtQueryDirectoryFile的异步调用是如何工作的?
通过异步调用,我的意思是在使用FILE_SYNCHRONOUS_IO_ALERT或FILE_SYNCHRONOUS_IO_NONALERT打开的目录而不是上调用NtQueryDirectoryFile
。
对我来说,似乎返回STATUS_PENDING
就像普通NtReadFile请求对普通文件一样,但当我尝试在目录上使用NtWaitForSingleObject时,它并没有结束没问题,我仍然没有得到所有数据......为什么会这样?
答案 0 :(得分:5)
据我所知,没有一个Windows文件系统支持异步查询目录调用。
Win32 API永远不会调用NtQueryDirectoryFile,所以对它的支持是命中注定。
NTFS理论上支持异步NtQueryDirectoryFile但是(正如我所提到的)它没有经过广泛测试,因此可能无法正常工作。
您的响应表明您在目录上调用了WaitForSingleObject - 这不是异步模式在NT中的工作方式 - 您需要在作为NtQueryDirectoryFile参数提供的事件句柄上调用WaitForSingleObject。
此更新是向NTFS开发人员询问更多信息的结果,他在他的机器上测试了这个场景,并且对他有效(在Windows 7上)。