Привет!
Если при создании файла существует папка с таким именем, то CreateFile возвращает AccessDenied, а хотелось бы получать нормальный статус ошибки, например ERROR_ALREADY_EXISTS. Т.е. если я получаю AccessDenied, то чтобы проверить, существует ли объект с таким именем нужно вызвать например FindFirstFile, но в момент его вызова папку могут удалить, и тогда будет непонятно, почему был запрещён доступ. Есть ли какой-нибудь способ решить эту проблему?
Файл должен создаваться как CREATE_NEW, т.к. нужно именно создание нового файла. Хотя при CREATE_ALWAYS аналогично возвращается AccessDenied
Пример кода:
BOOL b = CreateDirectory(L"D:\\tmp\\d", NULL);
HANDLE h = CreateFile(L"D:\\tmp\\d", GENERIC_WRITE | GENERIC_READ, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD err = GetLastError();
// err == ERROR_ACCESS_DENIED
// если сейчас вызвать FindFirstFile(L"D:\\tmp\\d), то папка уже может быть удалена, и непонятно почему не создался файл