在我的 C++ Windows 应用程序中,我使用 CreateFile
函数来访问文件。我还使用以下功能来控制我的文件:
DeviceIOControl
读取文件
设置文件指针
因为我希望我的应用程序同时访问文件中的多个位置(从我收到的请求到我的应用程序)我希望我的应用程序是异步的。我看到有一个名为 FILE_FLAG_OVERLAPPED
的标志,但我不知道如何使用它以及何时知道它何时完成操作。
有没有我必须注册的回调?
如果您可以在此处复制示例,那将很有帮助
谢谢
最佳答案
您可以生成一个新线程并从第二个线程同步调用 ReadFie()。您需要使用同步对象(例如事件或关键部分)来同步两个线程。
如果您坚持使用单线程异步方法,则调用 ReadFile() 或 ReadFileEx() 并传递一个 OVERLAPPED 结构。该结构将提供一个回调函数,该函数将在文件读取完成后调用。
然而,要调用回调函数,调用线程(调用 ReadFile() 或 ReadFileEx() 的线程)必须位于 alertable state 中。 .
您只需使用其中一个等待函数来挂起线程并等待读取函数调用回调函数即可。
关于c++ - 在 C++ 中对 CreateFile 和 ReadFile 的异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9275175/