При запуске драйвера открывается лог-файл и в нем фиксируется начало работы:
len = sprintf(text, "Start at %20u Sys timer frequency:%20u",&timeStampStart, &Frequency);
text[len++] = 0x0d;
text[len++] = 0x0a;
ntStatus = ZwCreateFile(&hLogFile, FILE_APPEND_DATA,
&objectAttributes, &ioStatus, NULL, FILE_ATTRIBUTE_NORMAL,
HARE_READ, FILE_OPEN_IF, FILE_SYNCHRONOUS_IO_NONALERT|FILE_SEQUENTIAL_ONLY|FILE_NON_DIRECTORY_FILE, NULL, 0 );
ZwWriteFile( hLogFile, NULL, NULL, NULL, &ioStatus, text, len, 0, 0);
Создает, открывает, пишет. Хиндёл сохраняю, как статик.
При последующих вызовах драйиера ZwWriteFile должна записывать в лог сообщения о событиях.
Хрен нам!!! Трейсю Айсом: строка есть, длина правильная, хиндёл тот же, флаги те же - НЕ ПИШЕТ!!!
Трейсю внутрь ZwWriteFile в этом месте: вначале вызывает ObReferenceObjectByHandle и та хиндёл бракует!!!
Может быть хендл между вызовами драйвера может измениться и его нужно как-то лочить/унлочить?!
[Win32] Трабла с ZwWriteFile в sys-драйвере!15.08.02 09:39 Автор: cb <cb> Статус: Member
> Трейсю внутрь ZwWriteFile в этом месте: вначале вызывает > ObReferenceObjectByHandle и та хиндёл бракует!!!
какой NTSTATUS возвращает ObReferenceObjectByHandle?
скорее всего проблема в том что ты открыл файл в контексте процесса SYSTEM а пытаешься писАть в другом процессе. Попробуй создать SystemThread и работать с файлом там (открывать/писАть), а данные заталкивай в какой-ндь список, который будет обрабатываться в этом SystemThread-е.
cb.
Сенкс! Так оно и есть! Он пишет только события system.16.08.02 07:47 Автор: Zef <Alloo Zef> Статус: Elderman