Re[2]: FS Minifilter, IRP_MJ_CREATE. Кривой FileName?
От: sergey77666 Марс  
Дата: 08.01.18 14:38
Оценка:
Здравствуйте, okman, Вы писали:

O>Здравствуйте, sergey77666, Вы писали:


S>>Примерно такой код

S>>...
S>>И вот на этом самом месте, где RtlStringCchPrintfW, иногда происходит ерунда.

O>1. Спецификатор '%wZ' требует передачи указателя на UNICODE_STRING, а не сам UNICODE_STRING.


O>2. Вместо вытаскивания имени из FILE_OBJECT надежнее FltGetFileNameInformation.


1. А почему тогда у меня кругом без указателя, и в основном все работает?
На моем ноутбуке драйвер работал в течение минут 20. Edge тоже. Нигде так и не упало.

2. Хм, может и переделаю. Как я понял, она даст более "нормальный" путь, с буквой диска — это бы не помешало...
А нужны ли тогда будут многочисленные проверки, которые есть в начале этого кода? Проверка PFILE_OBJECT на NULL, проверка того, что вернет FltGetFileNameInformation (там структура, в ней много UNICODE_STRING, не надо ли проверять какие-то из них с помощью &str == NULL (или с помощью str.Length==0?))

3. Еще бы точно определить, файл или папка. Все-таки моя проверка FILE_DIRECTORY_FILE почему-то иногда лажает. Вроде бы не страшно, поскольку я потом еще расширение проверяю, и у папок нету шанса попасть в лог, если не оканчивается .sys/.dll/.exe/.bat и т.д., а это очень низкий шанс, тем более в сочетании с "лажей". Но...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.