Tag: overlapped io

ReadFile和Overlapped出错

我有ReadFile和重叠的问题。 首先我使用与0重叠的ReadFile ZeroMemory(&overlapped ,sizeof(OVERLAPPED)); hDevice = CreateFileW(zwpath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL); if(hDevice != INVALID_HANDLE_VALUE){ ret = ReadFile(hDevice, buff, 1024, &numerobyte, &overlapped); } 使用for(),我可以使用printf()查看字节 for (int n=0; n<sizeof(buff); n++) { printf("0x%02X ", buff[n]); } 现在我有一个大数字的变种 crbig = 322122547 d1 = (DWORD*)crbig; overlapped.Offset = d1[1]; //22122547 overlapped.OffsetHigh = d1[0];// […]

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

我已经打开了一个文件 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参数时, GetLastError()返回ERROR_INVALID_PARAMETER 。 打开两个句柄,一个用于读取,一个用于写入也不起作用,因为第二个句柄产生ERROR_ACCESS_DENIED错误。 如何打开异步读取和同步写入的文件? 我不想不必要地增加代码复杂性。