gpt4 book ai didi

c - 同步写入使用 FILE_FLAG_OVERLAPPED 打开的文件

转载 作者:行者123 更新时间:2023-12-01 13:54:26 27 4
gpt4 key购买 nike

我已经使用打开了一个文件

HANDLE handle= 
CreateFileW(
fileName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,
FILE_FLAG_OVERLAPPED, NULL);

然后将文件句柄用于异步读取操作:
ReadFile(handle, buffer, 1, NULL, &overlapped);

这有效。但是,我现在想做一个同步写入。 WriteFile 文件指出

If hFile was opened with FILE_FLAG_OVERLAPPED, the following conditions are in effect:
• The lpOverlapped parameter must point to a valid and unique OVERLAPPED structure, otherwise the function can incorrectly report that the write operation is complete.



lpOverlapepd省略参数, ERROR_INVALID_PARAMETERGetLastError() 返回.打开两个 handle ,一个用于读取,一个用于写入也不起作用,因为第二个 handle 会产生 ERROR_ACCESS_DENIED错误。

如何打开文件以进行异步读取和同步写入?我不想不必要地增加代码复杂性。

最佳答案

同步写入可以通过为写入操作创建手动重置事件、写入文件(使用重叠结构中的事件进行写入操作)然后立即等待事件来实现。

根据您的异步读取是否需要与您的写入异步,您可能需要确保使用兼容的等待,以便可以调用读取完成例程,否则读取将发生并且数据将存储在缓冲区中,但是你无法处理它。

关于c - 同步写入使用 FILE_FLAG_OVERLAPPED 打开的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6663600/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com