在c++中异步调用CreateFile和ReadFile
Async calls to CreateFile and ReadFile in c++
在我的c++windows应用程序中,我使用CreateFile
函数访问文件。我还使用以下功能来控制我的文件:
DeviceIOControl
ReadFile
SetFilePointer
由于我希望我的应用程序能同时访问文件中的许多位置(从我收到的对应用程序的请求中),我希望应用程序是异步的。我看到有一个名为FILE_FLAG_OVERLAPPED
的标志,但我不知道如何使用它,也不知道它什么时候完成操作。有我必须注册的回拨吗?如果你能在这里复制一个样品,这将对有帮助
感谢
您可以生成一个新线程,并从第二个线程同步调用ReadFie()。您需要使用同步对象(如事件或关键部分)同步两个线程。
如果您坚持使用单线程异步方法,那么调用ReadFile()或ReadFileEx()并传递OVERLAPPED结构。该结构将提供一个回调函数,该函数将在文件读取完成后调用。
然而,对于要调用的回调函数,调用线程(调用ReadFile()或ReadFileEx()的线程)必须处于可报警状态。
您只需使用其中一个等待函数来挂起线程,然后等待读取函数调用回调函数。
您读过关于同步和重叠输入和输出的MSDN页面吗?该页面描述了它的工作原理,并使用重叠I/O示例链接到命名管道服务器?
相关文章:
- createFile() 和 DeviceIoControl() 等效于 Unix/Linux 中的卷设备
- ReadFile() 读取的字节数少于其参数中的指定值
- 要检查 SetFilePointerEx、ReadFile 或 WriteFile 是否成功,我是否需要检查 lpNew
- [WIN API]为什么共享相同的 WriteFile(sync) 和 ReadFile(sync) 句柄会导致 Rea
- CreateFile 在尝试打开目录进行读取时始终返回错误 5(访问被拒绝)
- Winapi ReadFile返回损坏的数据
- ReadFile(m_hComm, &cadena[rebut]==0, 1, &recibiendo, NULL);
- 调用 ReadFile 程序后,在 debug_heap.cpp 中遇到断点
- CreateProcess vs. CreateFile EXE
- 用CreateFile打开显示时,正确的路径是什么?
- 为什么我无法使用CreateFile Win32 API打开文件RW,但可以使用STD ::删除将其删除
- 使用 ReadFile WinAPI 读取'Binary'文件
- C++ReadFile崩溃问题
- C createFile无法读取文件error_access_denied
- C :如果串行端口没有新数据,则如何忽略ReadFile()
- 如何读取具有ReadFile函数的大文件
- C 从具有CreateFile的串行端口读取
- 带虚拟COM端口的USB串行设备-如果使用带USB路径的CreateFile(),则ReadFile()读取零字节
- CreateFile打开在另一个终端会话中创建的MS-DOS设备
- 在c++中异步调用CreateFile和ReadFile