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

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


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

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

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


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


Так. От тотального перехода на указатели стало хуже.
DbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, "CreateFile: %wZ\r\n", &(pFileObject.FileName)); — работает
res = RtlStringCchPrintfW(bufPFO, 1024, L"%wZ", &(pFileObject.FileName)); — не работает, теперь постоянно выдает то 80000005, то просто пустая строка
Значит, сам pFileObject.FileName "кривой", что ли. Еще есть подозрения на функцию
FsRtlIsNameInExpression(&strExeExtCheckPattern, &(pFileObject.FileName), TRUE, NULL
где:
UNICODE_STRING strExeExtCheckPattern = RTL_CONSTANT_STRING(L"*.EXE");
Вряд ли она повреждает этот FileName. Но все же надо смотреть.

BSOD не там, а именно на return, во всяком случае в ситуации с Edge.
Сперва надо вообще все потихоньку выкинуть, по крайней мере все это безумие со строками, и посмотреть что будет.

Оперативки на момент падения было 400 МБ свободной (по диспетчеру задач). ChromeSetup столько не жрет (а проблема была уже после его запуска).
Отредактировано 08.01.2018 16:13 sergey77666 . Предыдущая версия . Еще …
Отредактировано 08.01.2018 16:12 sergey77666 . Предыдущая версия .
Отредактировано 08.01.2018 16:11 sergey77666 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.