【发布时间】:2011-07-12 11:40:00
【问题描述】:
我使用
打开了一个文件HANDLE handle=
CreateFileW(
fileName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,
FILE_FLAG_OVERLAPPED, NULL);
文件句柄随后用于异步读取操作:
ReadFile(handle, buffer, 1, NULL, &overlapped);
这行得通。但是,我现在想做一个同步写入。 WriteFile 文档指出
如果使用 FILE_FLAG_OVERLAPPED 打开 hFile,则以下条件有效:
• lpOverlapped 参数必须指向一个有效且唯一的 OVERLAPPED 结构,否则函数会错误地报告写操作已完成。
当省略lpOverlapepd参数时,ERROR_INVALID_PARAMETER由GetLastError()返回。打开两个句柄,一个用于读取,一个用于写入也不起作用,因为第二个句柄会产生ERROR_ACCESS_DENIED 错误。
如何打开文件进行异步读取和同步写入?我不想不必要地增加代码复杂性。
【问题讨论】:
-
我想使用 I/O 完成端口同时执行其他 I/O 操作到 COM 端口上的操作。
标签: c file asynchronous writefile overlapped-io