функция обратного вызова 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 |