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


Функция FltDeleteContext (fltkernel.h)

FltDeleteContext помечает указанный контекст для удаления.

Синтаксис

VOID FLTAPI FltDeleteContext(
  [in] PFLT_CONTEXT Context
);

Параметры

[in] Context

Указатель на контекст для удаления. Этот параметр является обязательным и не может быть null.

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

Никакой.

Замечания

Дополнительные сведения о контекстах см. в разделе О контекстах минифильтра.

Так как контексты считаются ссылочными, обычно не требуется для вызова подпрограммы драйвера минифильтра, например FltDeleteContext, для явного удаления контекста.

FltDeleteContext помечает контекст удаления. Контекст обычно освобождается, как только текущая ссылка на нее освобождается, если на ней не будет выдающейся ссылки (например, так как контекст по-прежнему используется другим потоком).

При использовании FltDeleteContext следует учитывать следующие элементы:

  • Когда драйвер минифильтра вызывает FltDeleteContext, драйвер минифильтра должен иметь ссылку на контекст. Однако если драйвер минифильтра вызывает FltDeleteStreamHandleContext, FltDeleteStreamContext, FltDeleteInstanceContextи т. д., драйвер минифильтра не требует ссылки на контекст. После вызова драйвера минифильтра FltDeleteContext, ссылка на контекст по-прежнему действительна. Драйвер минифильтра должен вызвать процедуру FltReleaseContext, чтобы освободить ссылку на контекст.

  • FltDeleteContext удаляет контекст из внутренних структур диспетчера фильтров. Затем дальнейшие вызовы функций, которые получают контексты, такие как FltGetContexts и FltGetInstanceContext, не могут найти этот контекст. Однако память контекста не освобождается до тех пор, пока число ссылок для контекста не будет равно 0.

Контексты также можно удалить, вызвав соответствующую подпрограмму удаления контекста из следующей таблицы.

Тип контекста Подпрограмма 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 (include Fltkernel.h)
библиотеки FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

См. также

FltAllocateContext

FltCloseSectionForDataScan

FltDeleteFileContext

FltDeleteInstanceContext

FltDeleteStreamContext

FltDeleteStreamHandleContext

FltDeleteTransactionContext

FltDeleteVolumeContext

FltReferenceContext

FltReleaseContext