Как лучше в драйвере-минифильтре сделать запись в файл по таймеру?
От: sergey77666 Марс  
Дата: 05.01.18 13:05
Оценка:
while(true) и KeDelayExecutionThread в DriverEntry — это неправильно, т.к. служба будет постоянно "Запускается".

Но как создать поток, и еще как быть с буфером?
С ним планируется сделать так:
— буфер объявлен как глобальная переменная UNICODE_STRING вне функций и инициалирован L""
— каллбеки фильтра аппендят к нему некие строки
— по таймеру проверяется, не пустой ли буфер по-прежнему, и если нет — то создается и открывается файл, буфер записывается в него, файл закрывается, после чего буфер опять инициализируется L""

На всякий случай, код создания того файла:

    OBJECT_ATTRIBUTES  objAttr;
    
    InitializeObjectAttributes(&objAttr, &filePath,
       OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE,
       NULL, NULL);
       
    return ZwCreateFile(hFile,
                            GENERIC_ALL,
                            &objAttr, ioStatusBlock, NULL,
                            FILE_ATTRIBUTE_NORMAL,
                            0,
                            FILE_OVERWRITE_IF, 
                            FILE_SYNCHRONOUS_IO_NONALERT,
                            NULL, 0);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.