在c++中异步调用CreateFile和ReadFile

Async calls to CreateFile and ReadFile in c++

本文关键字:CreateFile ReadFile 调用 异步 c++      更新时间:2023-10-16

在我的c++windows应用程序中,我使用CreateFile函数访问文件。我还使用以下功能来控制我的文件:

DeviceIOControlReadFileSetFilePointer

由于我希望我的应用程序能同时访问文件中的许多位置(从我收到的对应用程序的请求中),我希望应用程序是异步的。我看到有一个名为FILE_FLAG_OVERLAPPED的标志,但我不知道如何使用它,也不知道它什么时候完成操作。有我必须注册的回拨吗?如果你能在这里复制一个样品,这将对有帮助

感谢

您可以生成一个新线程,并从第二个线程同步调用ReadFie()。您需要使用同步对象(如事件或关键部分)同步两个线程。

如果您坚持使用单线程异步方法,那么调用ReadFile()或ReadFileEx()并传递OVERLAPPED结构。该结构将提供一个回调函数,该函数将在文件读取完成后调用。

然而,对于要调用的回调函数,调用线程(调用ReadFile()或ReadFileEx()的线程)必须处于可报警状态。

您只需使用其中一个等待函数来挂起线程,然后等待读取函数调用回调函数。

您读过关于同步和重叠输入和输出的MSDN页面吗?该页面描述了它的工作原理,并使用重叠I/O示例链接到命名管道服务器?