как сделать, чтобы выполнение не продолжалось, пока он реально не создаст файл?
LARGE_INTEGER AllocationSize;
UNICODE_STRING LogFileName;
IO_STATUS_BLOCK IoStatusBlock;
OBJECT_ATTRIBUTES ObjectAttributes;
HANDLE LogFileHandle;
NTSTATUS Status;
//
// Open the Log File for writing.
//
RtlInitUnicodeString(L"\\??\\C:\\FP_1.log", fullPath);
InitializeObjectAttributes(
&ObjectAttributes,
&LogFileName,
OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE,
NULL,
NULL
);
Status = ZwCreateFile(
&LogFileHandle,
GENERIC_WRITE,
&ObjectAttributes,
&IoStatusBlock,
NULL,
FILE_ATTRIBUTE_NORMAL,
0,
FILE_OVERWRITE_IF,
FILE_SYNCHRONOUS_IO_NONALERT,
NULL,
0
);
ZwClose(LogFileHandle);
Если запустить как обычно, то файл создается.
Но если ПОСЛЕ этих строк будет нечто, провоцирующее BSOD — то потом обнаруживается, что файла нет.
Получается, сперва код продолжает выполнение, а затем файл создается фактически.
Как исправить?