Всем привет. Пишу MiniFilter для контроля за файловой системой, это мои первые попытки написать драйвер, поэтому могу путать терминологию и чтобы не было неоднозначностей буду приводить названия используемых функций. Фильтр устанавливаю с помощью FltRegisterFilter, контролирую IRP_MJ_CREATE и IRP_MJ_DIRECTORY_CONTROL. Внутри колбеков с помощью PsGetCurrentProcess получаю ссылку на PEPROCESS, дальше используется пара функций для определения идентификатора процесса (PsGetProcessId) и его названия. По полученным данным принимаю решение об фильтрации. Когда запрос идет из обычных приложений, то проблем никаких нет. Но если какой-либо драйвер работает с файловой системой напрямую, то PsGetProcessId ссылается на system процесс (тесты с несколькими драйверами не проводил, но как я понимаю у каждого драйвера будет свой уникальный PEPROCESS, который будет ссылаться на system-процесс). Отсюда возникает вопрос: Можно ли как-нибудь из PEPROCESS (или любым другим способом) понять какой конкретный драйвер работает с файловой системой? Можно попробовать сделать перехват системных функций, тогда по точке возврата есть шанс определить драйвер, но я так понимаю, что PatchGuard мне не даст этого сделать, а возиться с отключение защиты совсем не хочется (я так понял это не тривиальная задача). Драйвер пишу для Win10 x64 и на данный момент использовать его в других системах не планирую.