Функция FltDeleteContext (fltkernel.h)
FltDeleteContext помечает указанный контекст для удаления.
Синтаксис
VOID FLTAPI FltDeleteContext(
[in] PFLT_CONTEXT Context
);
Параметры
[in] Context
Указатель на контекст для удаления. Этот параметр является обязательным и не может иметь значение NULL.
Возвращаемое значение
Нет.
Remarks
Дополнительные сведения о контекстах см. в разделе О контекстах минифильтра.
Так как контексты считаются ссылочными, драйверу минифильтра обычно не требуется вызывать подпрограмму, например FltDeleteContext, для явного удаления контекста.
FltDeleteContext помечает контекст для удаления. Контекст обычно освобождается сразу после освобождения текущей ссылки на него, если на него не будет незавершенной ссылки (например, потому, что контекст по-прежнему используется другим потоком).
При использовании FltDeleteContext следует учитывать следующие элементы:
Когда драйвер минифильтра вызывает FltDeleteContext, драйвер минифильтра уже должен иметь ссылку на контекст. Однако когда драйвер минифильтра вызывает FltDeleteStreamHandleContext, FltDeleteStreamContext, FltDeleteInstanceContext и т. д., драйверу минифильтра не требуется ссылка на контекст. После того как драйвер минифильтра вызывает FltDeleteContext, эта ссылка на контекст по-прежнему действительна. Драйвер минифильтра должен вызвать подпрограмму FltReleaseContext , чтобы освободить ссылку на контекст.
FltDeleteContext удаляет контекст из внутренних структур диспетчера фильтров. Затем дальнейшие вызовы функций, которые получают контексты, такие как FltGetContexts и FltGetInstanceContext, не могут найти этот контекст. Однако память контекста не освобождается до тех пор, пока число ссылок для контекста не перейдет к 0.
Контексты также можно удалить, вызвав соответствующую подпрограмму delete-context из следующей таблицы.
Тип контекста | Подпрограмма Delete-Context |
---|---|
FLT_FILE_CONTEXT | FltDeleteFileContext (только для Windows Vista и более поздних версий). |
FLT_INSTANCE_CONTEXT | FltDeleteInstanceContext |
FLT_SECTION_CONTEXT | FltCloseSectionForDataScan (только Windows 8 и более поздних версий). |
FLT_STREAM_CONTEXT | FltDeleteStreamContext |
FLT_STREAMHANDLE_CONTEXT | FltDeleteStreamHandleContext |
FLT_TRANSACTION_CONTEXT | FltDeleteTransactionContext (только Для Windows Vista и более поздних версий). |
FLT_VOLUME_CONTEXT | FltDeleteVolumeContext |
Чтобы выделить новый контекст, вызовите FltAllocateContext.
Чтобы увеличить количество ссылок в контексте, вызовите FltReferenceContext.
Чтобы уменьшать количество ссылок в контексте, вызовите FltReleaseContext.
Контекст раздела, FLT_SECTION_CONTEXT тип, не должен удаляться с помощью FltDeleteContext. Вместо этого используйте FltReleaseContext , чтобы освободить контекст раздела.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | fltkernel.h (включая Fltkernel.h) |
Библиотека | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |