При запуске драйвера открывается лог-файл и в нем фиксируется начало работы:
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 и та хиндёл бракует!!!
Может быть хендл между вызовами драйвера может измениться и его нужно как-то лочить/унлочить?!
|