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