Как перехватить PathFileExists в драйвере минифильтра? - PullRequest
0 голосов
/ 26 декабря 2018

Я пишу драйвер для минифильтра Windows для Win7 и более поздних версий.

Моя цель - перехватить API PathFileExists , как в предварительном обратном вызове, так и после минифильтра-callback.

API PathFileExists будет вызывать QueryOpen в пространстве ядра (я обнаружил это с помощью procmon.exe), но мой драйвер минифильтра НЕ МОЖЕТ узнать * 1013Операция * QueryOpen , очень печально: K.

После гораздо большей работы по поиску, я улучшаю свой код драйвера, добавляя следующий код в структуру FLT_OPERATION_REGISTRATION .

{
    IRP_MJ_QUERY_OPEN,
    0,
    mnflt_PreOperation,
    mnflt_PostOperation
},

Но ..... Это все еще НЕ работает. Функция обратного вызова mnflt_PreOperation и mnflt_PostOperation не была вызвана, когда PathFileExists API работает.

Я что-то упускаю или совсем НЕ правильно?

Спасибо за любую помощь, которая может быть оказана!

1 Ответ

0 голосов
/ 27 декабря 2018

вам нужно использовать IRP_MJ_NETWORK_QUERY_OPEN вместо IRP_MJ_QUERY_OPEN.так что вам нужно

{
    IRP_MJ_NETWORK_QUERY_OPEN,
    0,
    mnflt_PreOperation,
    mnflt_PostOperation
},

IRP_MJ_NETWORK_QUERY_OPEN - это операция быстрого ввода-вывода.Это эквивалент операции FastIoQueryOpen (не FastIoQueryNetworkOpenInfo).

читайте также Обработка IRP_MJ_NETWORK_QUERY_OPEN в минифильтре

...