Freigeben über


FltDeleteContext-Funktion (fltkernel.h)

FltDeleteContext markiert einen angegebenen Kontext zum Löschen.

Syntax

VOID FLTAPI FltDeleteContext(
  [in] PFLT_CONTEXT Context
);

Parameter

[in] Context

Ein Zeiger auf den zu löschenden Kontext. Dieser Parameter ist erforderlich und darf nicht NULL sein.

Rückgabewert

Keine.

Hinweise

Weitere Informationen zu Kontexten finden Sie unter Informationen zu Minifilterkontexten.

Da Kontexte referenzgezählt sind, ist es in der Regel nicht erforderlich, dass ein Minifiltertreiber eine Routine wie FltDeleteContext aufruft, um einen Kontext explizit zu löschen.

FltDeleteContext markiert einen Kontext zum Löschen. Der Kontext wird in der Regel freigegeben, sobald der aktuelle Verweis auf ihn freigegeben wird, es sei denn, es gibt einen ausstehenden Verweis darauf (z. B. weil der Kontext weiterhin von einem anderen Thread verwendet wird).

Sie sollten die folgenden Punkte berücksichtigen, wenn Sie FltDeleteContext verwenden:

  • Wenn ein Minifiltertreiber FltDeleteContext aufruft, muss der Minifiltertreiber bereits über einen Verweis auf den Kontext verfügen. Wenn der Minifiltertreiber jedoch FltDeleteStreamHandleContext, FltDeleteStreamContext, FltDeleteInstanceContext usw. aufruft, erfordert der Minifiltertreiber keinen Verweis auf den Kontext. Nachdem der Minifiltertreiber FltDeleteContext aufgerufen hat, ist dieser Verweis auf den Kontext weiterhin gültig. Der Minifiltertreiber muss die FltReleaseContext-Routine aufrufen, um den Verweis auf den Kontext freizugeben.

  • FltDeleteContext entfernt den Kontext aus den internen Filter-Manager-Strukturen. Dann können weitere Aufrufe von Funktionen, die Kontexte abrufen, wie FltGetContexts und FltGetInstanceContext, diesen Kontext nicht finden. Der Kontextspeicher wird jedoch erst freigegeben, wenn die Verweisanzahl für den Kontext auf 0 übergeht.

Kontexte können auch gelöscht werden, indem die entsprechende delete-context-Routine aus der folgenden Tabelle aufgerufen wird.

Inhaltstyp Delete-Context Routine
FLT_FILE_CONTEXT FltDeleteFileContext (nur Windows Vista und höher.)
FLT_INSTANCE_CONTEXT FltDeleteInstanceContext
FLT_SECTION_CONTEXT FltCloseSectionForDataScan (nur Windows 8 und höher).)
FLT_STREAM_CONTEXT FltDeleteStreamContext
FLT_STREAMHANDLE_CONTEXT FltDeleteStreamHandleContext
FLT_TRANSACTION_CONTEXT FltDeleteTransactionContext (nur Windows Vista und höher).)
FLT_VOLUME_CONTEXT FltDeleteVolumeContext

Um einen neuen Kontext zuzuordnen, rufen Sie FltAllocateContext auf.

Um die Verweisanzahl in einem Kontext zu erhöhen, rufen Sie FltReferenceContext auf.

Um die Verweisanzahl in einem Kontext zu verringern, rufen Sie FltReleaseContext auf.

Ein Abschnittskontext FLT_SECTION_CONTEXT Typs darf nicht mithilfe von FltDeleteContext gelöscht werden. Verwenden Sie stattdessen FltReleaseContext , um die Zuordnung eines Abschnittskontexts zu beheben.

Anforderungen

Anforderung Wert
Zielplattform Universell
Header fltkernel.h (include Fltkernel.h)
Bibliothek FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

Weitere Informationen

FltAllocateContext

FltCloseSectionForDataScan

FltDeleteFileContext

FltDeleteInstanceContext

FltDeleteStreamContext

FltDeleteStreamHandleContext

FltDeleteTransactionContext

FltDeleteVolumeContext

FltReferenceContext

FltReleaseContext