Я открыл файл, используя
HANDLE handle=
CreateFileW(
fileName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,
FILE_FLAG_OVERLAPPED, NULL);
Дескриптор файла затем используется для асинхронных операций чтения:
ReadFile(handle, buffer, 1, NULL, &overlapped);
Это работает. Тем не менее, я хочу сделать синхронную запись сейчас. WriteFile
документация гласит, что
Если hFile был открыт с FILE_FLAG_OVERLAPPED, действуют следующие условия:
• Параметр lpOverlapped должен указывать на действительную и уникальную структуру OVERLAPPED, в противном случае функция может неправильно сообщить о завершении операции записи.
Если параметр lpOverlapepd
не указан, GetLastError()
возвращает ERROR_INVALID_PARAMETER
. Открытие двух дескрипторов, одного для чтения и одного для записи, также не работает, поскольку второй дескриптор выдает ошибку ERROR_ACCESS_DENIED
.
Как открыть файл для асинхронного чтения и синхронной записи? Я не хочу увеличивать сложность кода без необходимости.