Freigeben über


FsRtlRemovePerFileObjectContext-Funktion (ntifs.h)

Bei einem "Legacy"-Dateisystemfiltertreiber hebt die FsRtlRemovePerFileObjectContext Funktion die Verknüpfung einer Kontextinformationsstruktur pro Dateiobjekt aus der Liste der zuvor einem Dateiobjekt zugeordneten Kontextkontexte auf.

Syntax

PFSRTL_PER_FILEOBJECT_CONTEXT FsRtlRemovePerFileObjectContext(
  [in]           PFILE_OBJECT FileObject,
  [in, optional] PVOID        OwnerId,
  [in, optional] PVOID        InstanceId
);

Parameter

[in] FileObject

Ein Zeiger auf ein Dateiobjekt, für das Kontextinformationen entfernt werden sollen.

[in, optional] OwnerId

Ein Zeiger auf eine vom Aufrufer zugewiesene Variable, die den eigenen Filter der Kontextstruktur pro Dateiobjekt eindeutig identifiziert. Das Format dieser Variablen ist filtertreiberspezifisch.

[in, optional] InstanceId

Ein Zeiger auf eine vom Aufrufer zugewiesene Variable, die verwendet werden kann, um zwischen Dateiobjektkontextstrukturen zu unterscheiden, die vom gleichen Filtertreiber erstellt wurden. Das Format dieser Variablen ist filtertreiberspezifisch. Dieser Parameter ist optional und kann NULL-werden.

Rückgabewert

FsRtlRemovePerFileObjectContext Verknüpfungen aufheben und einen Zeiger auf den ersten übereinstimmenden Kontext pro Dateiobjekt zurückgibt, der gefunden wird. Wenn keine Übereinstimmung gefunden wird, gibt FsRtlRemovePerFileObjectContextNULL-zurück.

Bemerkungen

Ein "Legacy"-Dateisystemfiltertreiber ruft FsRtlRemovePerFileObjectContext-auf, um die Verknüpfung einer eigenen Kontextstruktur pro Dateiobjekt aus der Liste der dateibezogenen Objektkontexte, die dem Dateiobjekt zugeordnet sind, aufzuheben. Alle solchen Kontextstrukturen müssen zuvor dem Dateiobjekt zugeordnet sein, indem FsRtlInsertPerFileObjectContextaufgerufen wird.

Wenn der Aufruf von FsRtlRemovePerFileObjectContext erfolgreich ist, wird die erste Kontextstruktur pro Dateiobjekt OwnerId (und InstanceId, falls vorhanden) nicht verknüpft und ein Zeiger darauf zurückgegeben. Dieser Zeiger kann vom Filtertreiber verwendet werden, um die nicht verknüpfte Kontextstruktur freizugeben.

HinweisFsRtlRemovePerFileObjectContext verknüpfungen nur die erste übereinstimmende Kontextstruktur pro Dateiobjekt aufheben, die gefunden wird. Wenn zusätzliche Übereinstimmungen pro Dateiobjektkontext vorhanden sind, muss der Filtertreiber FsRtlRemovePerFileObjectContext so oft aufrufen, wie dies erforderlich ist, um die Verknüpfung aufzuheben.
 
Um eine Kontextstruktur pro Dateiobjekt zu initialisieren, verwenden Sie das FsRtlInitPerFileObjectContext Makro.

Verwenden Sie die FsRtlInsertPerFileObjectContext--Funktion, um eine initialisierte Kontextstruktur pro Dateiobjekt zuzuordnen.

Um eine Kontextstruktur pro Dateiobjekt abzurufen, die einem Dateiobjekt zugeordnet ist, verwenden Sie die FsRtlLookupPerFileObjectContext--Funktion.

Hinweis Legacyfiltertreiber müssen die FsRtlRemovePerFileObjectContext--Funktion aufrufen, um die Verknüpfung aufzuheben und die Kontextinformationsstruktur vor Abschluss der IRP_MJ_CLOSE freizugeben. Andernfalls wird der dieser Kontextstruktur zugeordnete Arbeitsspeicher verloren gehen.
 
Darüber hinaus dürfen Dateisystem-Minifiltertreiber nicht die FsRtl-Xxx-PerFileObjectContext--Funktionen verwenden. Stattdessen können sie die entsprechenden FltXxxContext--Funktionen verwenden. Weitere Informationen finden Sie im thema FSRTL_PER_FILEOBJECT_CONTEXT.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows Vista
Zielplattform- Universal
Header- ntifs.h (einschließlich Fltkernel.h, Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- <= APC_LEVEL

Siehe auch

FSRTL_PER_FILEOBJECT_CONTEXT

FsRtlInitPerFileObjectContext

FsRtlInsertPerFileObjectContext

FsRtlLookupPerFileObjectContext-