Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] Трабла с ZwWriteFile в sys-драйвере! 15.08.02 08:54
Автор: Zef <Alloo Zef> Статус: Elderman
|
При запуске драйвера открывается лог-файл и в нем фиксируется начало работы:
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
|
|
|
|