Поделиться через


Инициализация фильтрации

После вызова FltRegisterFilter подпрограмма DriverEntry драйвера минифильтра обычно вызывает FltStartFiltering , чтобы начать фильтрацию операций ввода-вывода.

Каждый драйвер минифильтра должен вызывать FltStartFiltering из своей подпрограммы DriverEntry , чтобы уведомить диспетчер фильтров о том, что драйвер минифильтра готов начать присоединение к томам и фильтрацию запросов ввода-вывода. После того как драйвер минифильтра вызывает FltStartFiltering, диспетчер фильтров рассматривает драйвер минифильтра как полностью активный драйвер минифильтра, представляя ему запросы ввода-вывода и уведомления о томах, к которым необходимо подключиться. Драйвер минифильтра должен быть готов к началу получения этих запросов ввода-вывода и уведомлений еще до возврата FltStartFiltering .

В примере драйвера MiniSpy вызывается метод FltStartFiltering , как показано в следующем примере кода:

status = FltStartFiltering( MiniSpyData.FilterHandle );
if( !NT_SUCCESS( status )) {
  FltUnregisterFilter( MiniSpyData.FilterHandle );
}

Если вызов FltStartFiltering не возвращает STATUS_SUCCESS, драйвер минифильтра должен вызвать FltUnregisterFilter , чтобы отменить регистрацию.