如何将 ReadDirectoryChangesW() 方法与完成例程一起使用?
我想在异步模式下使用函数 ReadDirectoryChangesW()
并提供 I/O 完成例程。
问题是我不知道如何检索有关完成例程(CALLBACK
函数)中更改的确切信息。 完成例程的定义如下:
VOID CALLBACK FileIOCompletionRoutine(
[in] DWORD dwErrorCode,
[in] DWORD dwNumberOfBytesTransfered,
[in] LPOVERLAPPED lpOverlapped
);
我想知道这些信息是否包含在 LPOVERLAPPED 结构中。 但我不知道如何得到它。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
很好的问题! 虽然晚了 7 年,但这里有一些答案,或者更重要的是,如何找到它。 因此,ReadDirectoryChangesW 的文档:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365465%28v=vs.85%29.aspx
提供了 FileIOCompletionRoutine 的链接:
https://msdn.microsoft.com/ en-us/library/windows/desktop/aa364052%28v=vs.85%29.aspx
在示例部分中提供了使用完成例程的命名管道服务器的链接:
https://msdn.microsoft.com/en-us/library /windows/desktop/aa365601%28v=vs.85%29.aspx
信不信由你,它甚至没有使用 ReadDirectoryChangesW,但实际上给出了一个使用 ReadFileEx 的示例,其中还使用 FileIOCompletionRoutine :
https://msdn .microsoft.com/en-us/library/windows/desktop/aa365468%28v=vs.85%29.aspx
,您可以看到使用这两个函数(ReadFileEx 和 CompletedReadRoutine)的示例(这是一个这段代码中应用程序定义的回调函数 FileIOCompletionRoutine 的实现)):
这不是一个很好的答案(我只是在探索我自己是否想使用这些函数),但它应该可以帮助人们入门。
另请参阅:
https:// /msdn.microsoft.com/en-us/library/windows/desktop/aa365261%28v=vs.85%29.aspx
Excellent question! It's 7 years late, but here's somewhat of an answer, or, more importantly, how to find it. So, the documentation for ReadDirectoryChangesW:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365465%28v=vs.85%29.aspx
in the Parameters section gives a link to FileIOCompletionRoutine:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa364052%28v=vs.85%29.aspx
which in the Examples section gives a link to Named Pipe Server Using Completion Routines:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365601%28v=vs.85%29.aspx
which believe it or not doesn't even use ReadDirectoryChangesW but actually gives an example using ReadFileEx, which also uses FileIOCompletionRoutine:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365468%28v=vs.85%29.aspx
and you can see an example of them using these two functions (ReadFileEx and CompletedReadRoutine (which is an implementation of the application-defined callback function FileIOCompletionRoutine)) in this piece of code:
It's not a great answer (I was only exploring whether I even wanted to use these functions, myself), but it should help people get started.
See also:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365261%28v=vs.85%29.aspx