asynchronous调用C ++中的CreateFile和ReadFile

在我的C ++ Windows应用程序中,我使用CreateFile函数来访问文件。 我也使用以下function来控制我的文件:

DeviceIOControl ReadFile SetFilePointer

因为我希望我的应用程序可以同时访问文件中的许多位置(从请求到我的应用程序),我希望我的应用程序将是asynchronous的。 我看到有一个名为FILE_FLAG_OVERLAPPED的标志,但我不知道如何使用它,我什么时候知道它何时完成操作。 有什么callback,我必须注册? 如果你可以在这里复制一个样本,这将是有益的

谢谢

你可以产生一个新的线程,并从第二个线程同步调用ReadFie()。 您需要使用同步对象(如事件或临界区)来同步两个线程。

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

但是,对于要调用的回调函数,调用线程(称为ReadFile()或ReadFileEx())的线程必须处于可警告状态 。

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

您是否在同步和重叠输入和输出中读取了此MSDN页面,该页面描述了它如何工作并使用重叠I / O示例链接到命名管道服务器 ?