Функция 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

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

FltAllocateContext

FltCloseSectionForDataScan

FltDeleteFileContext

FltDeleteInstanceContext

FltDeleteStreamContext

FltDeleteStreamHandleContext

FltDeleteTransactionContext

FltDeleteVolumeContext

FltReferenceContext

FltReleaseContext