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


функция обратного вызова PFLT_FILTER_UNLOAD_CALLBACK (fltkernel.h)

Драйвер минифильтра может зарегистрировать подпрограмму типа PFLT_FILTER_UNLOAD_CALLBACK в качестве процедуры FilterUnloadCallback драйвера мини-фильтра.

Синтаксис

PFLT_FILTER_UNLOAD_CALLBACK PfltFilterUnloadCallback;

NTSTATUS PfltFilterUnloadCallback(
  FLT_FILTER_UNLOAD_FLAGS Flags
)
{...}

Параметры

Flags

Битовая маска флагов, описывающих запрос на выгрузку. Этот параметр может иметь значение NULL или следующее:

Flag Значение
FLTFL_FILTER_UNLOAD_MANDATORY Диспетчер фильтров устанавливает этот флаг, чтобы указать, что операция выгрузки является обязательной.

Возвращаемое значение

Эта подпрограмма обратного вызова возвращает STATUS_SUCCESS или значение NTSTATUS, например следующее:

Код возврата Описание
STATUS_FLT_DO_NOT_DETACH Если операция выгрузки не является обязательной, возврат этого значения состояния предотвращает выгрузку драйвера минифильтра. Это код ошибки.

Комментарии

Когда драйвер минифильтра регистрирует себя путем вызова FltRegisterFilter, он может зарегистрировать подпрограмму FilterUnloadCallback . Чтобы зарегистрировать эту подпрограмму обратного вызова, драйвер минифильтра сохраняет адрес подпрограммы типа PFLT_FILTER_UNLOAD_CALLBACK в поле FilterUnloadCallbackструктуры FLT_REGISTRATION , которую драйвер мини-фильтра передает в качестве параметра в FltRegisterFilter.

Драйверы мини-фильтра не требуются для регистрации подпрограммы FilterUnloadCallback . Однако настоятельно рекомендуется зарегистрировать подпрограмму выгрузки. Если драйвер мини-фильтра не регистрирует подпрограмму FilterUnloadCallback , ее невозможно выгрузить.

Когда драйвер мини-фильтра регистрирует подпрограмму FilterUnloadCallback :

  • Диспетчер фильтров вызывает подпрограмму FilterUnloadCallback , чтобы уведомить драйвер минифильтра о том, что диспетчер фильтров вот-вот выгрузит драйвер минифильтра.

  • Если операция выгрузки не является обязательной и подпрограмма FilterUnloadCallback возвращает код NTSTATUS об ошибке или предупреждение, например STATUS_FLT_DO_NOT_DETACH, драйвер минифильтра не выгружается. В противном случае драйвер минифильтра выгружается.

  • Если флаг FLTFL_FILTER_UNLOAD_MANDATORY задан в параметре Flags , операция выгрузки является обязательной, и драйвер минифильтра не может предотвратить выгрузку.

Дополнительные сведения о возможных причинах выгрузки и процессе выгрузки драйвера мини-фильтра см. в разделе При вызове подпрограммы FilterUnloadCallback .

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть fltkernel.h (включая Fltkernel.h)
IRQL PASSIVE_LEVEL

См. также раздел

FLT_REGISTRATION

FltRegisterFilter