Делаю так: InitializeObjectAttributes(&ObjectAttributes, &FileName, OBJ_CASE_INSENSITIVE + OBJ_KERNEL_HANDLE, NULL, NULL); status = ZwCreateFile(hFile, FILE_WRITE_DATA + SYNCHRONIZE, &ObjectAttributes, &IoStatus, NULL, FILE_ATTRIBUTE_NORMAL, 0, FILE_CREATE, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0); Файл создается, но status не равен STATUS_SUCCESS... В чем дело?
Удачное завершение операции не обязательно происходит с кодом STATUS_SUCCESS. Для проверки удачности пользуйся макросом NT_SUCCESS.
Попробую, но почему последующий вызов ZwСlose(hFile); не освобождает файл? После того как драйвер отработал все файлы остаются залочены.
Удачное завершение операции не обязательно происходит с кодом STATUS_SUCCESS. У этой функции обязательно, #define NT_SUCCESS(Status) ((NTSTATUS)(Status) >= 0) Попробую, но почему последующий вызов ZwСlose(hFile); не освобождает файл? После того как драйвер отработал все файлы остаются залочены. Откуда мы знаем, может кто-то перехватил этот вызов, а обработчик кривой. Короче давай еще информацию, и код.
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath) { NTSTATUS status = STATUS_SUCCESS; InitializeObjectAttributes(&ObjectAttributes, &FileName, OBJ_CASE_INSENSITIVE + OBJ_KERNEL_HANDLE, NULL, NULL); status = ZwCreateFile(hFile, FILE_WRITE_DATA + SYNCHRONIZE, &ObjectAttributes, &IoStatus, NULL, FILE_ATTRIBUTE_NORMAL, 0, FILE_CREATE, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0); DbgPrint("ZwCreateFile: 0x%x!\n", status); ZwСlose(hFile); return status; } Возвращаемый статус: STATUS_ACCESS_VIOLATION!!! Как это??? Файл то создался!
<font color="gray][ ViRUS</font><!--color--><font color="gray]: Возвращаемый статус: STATUS_ACCESS_VIOLATION!!! Как это??? ]</font><!--color--> Код (Text): try { ProbeAndWriteHandle( hFile, 0 ); } except(EXCEPTION_EXECUTE_HANDLER) { return GetExceptionCode(); } 1. не ZwCreateFile(hFile,...) а ZwCreateFile(&hFile,...) 2. OBJ_KERNEL_HANDLE тут не нужен, т.к. DriverEntry выполняется в кнтексте системного процесса и хендл всё равно попадет в его таблицу хендлов