Freigeben über


FSRTL_PER_FILEOBJECT_CONTEXT Struktur (ntifs.h)

Das Betriebssystem verwendet die undurchsichtige FSRTL_PER_FILEOBJECT_CONTEXT Struktur zum Nachverfolgen von Dateisystemfiltertreiber-definierten Kontextinformationsstrukturen für ein Dateiobjekt.

Syntax

typedef struct _FSRTL_PER_FILEOBJECT_CONTEXT {
  LIST_ENTRY Links;
  PVOID      OwnerId;
  PVOID      InstanceId;
} FSRTL_PER_FILEOBJECT_CONTEXT, *PFSRTL_PER_FILEOBJECT_CONTEXT;

Angehörige

Links

Verknüpfen Sie diese Struktur in der Liste aller Kontextstrukturen pro Dateiobjekt, die demselben Dateiobjekt zugeordnet sind. FsRtlInsertPerFileObjectContext fügt dieses Element in die Liste aller Kontextstrukturen pro Dateiobjekt für das Dateiobjekt ein.

OwnerId

Ein Zeiger auf eine vom Filtertreiber zugewiesene Variable, die den eigenen Filter der Kontextstruktur pro Dateiobjekt eindeutig identifiziert. Das Format dieser Variablen ist filtertreiberspezifisch. Filterautoren sollten einen Wert auswählen, der sowohl sinnvoll als auch praktisch ist, z. B. die Adresse des Geräteobjekts oder Treiberobjekts des Filters. Beachten Sie, dass der Wert dieses Elements nicht NULL sein kann.

InstanceId

Ein Zeiger auf eine vom Filtertreiber zugewiesene Variable, die verwendet werden kann, um zwischen den Kontextstrukturen pro Dateiobjekt zu unterscheiden, die vomselben Filtertreiber erstellt wurden. Das Format dieser Variablen ist filtertreiberspezifisch. Filterautoren sollten einen Wert auswählen, der sowohl aussagekräftig als auch praktisch ist, z. B. die Adresse des Dateiobjekts selbst. Beachten Sie, dass der Wert dieses Elements NULL sein kann.

Bemerkungen

Dateisystemfiltertreiber können die undurchsichtige FSRTL_PER_FILEOBJECT_CONTEXT Struktur verwenden, um Kontextinformationen für ein Dateiobjekt zu verwalten. Diese Struktur kann as-is oder in eine treiberdefinierte Kontextstruktur pro Dateiobjekt eingebettet werden.

Jedem Dateiobjekt kann eine Kontextstrukturliste pro Dateiobjekt zugeordnet sein. Jedes Element dieser Liste (d. h. eine bestimmte Kontextstruktur pro Dateiobjekt) gehört zu einem Filtertreiber. Aus Sicht eines Filtertreibers kann jeder Filtertreiber mehrere Kontextstrukturen pro Dateiobjekt für dasselbe Dateiobjekt zuordnen.

Jede filterdefinierte Kontextstruktur pro Dateiobjekt muss eine initialisierte FSRTL_PER_FILEOBJECT_CONTEXT Struktur enthalten. Die FSRTL_PER_FILEOBJECT_CONTEXT-Struktur kann aus seitenseitigem oder nicht seitenfremdem Pool zugeordnet werden und muss mithilfe des FsRtlInitPerFileObjectContext Makros initialisiert werden.

Wenn Sie eine FSRTL_PER_FILEOBJECT_CONTEXT Struktur oder eine filterdefinierte Kontextstruktur pro Dateiobjekt (die eine initialisierte FSRTL_PER_FILEOBJECT_CONTEXT Struktur enthält) in die Liste aller Kontextstrukturen für ein Dateiobjekt einfügen möchten, verwenden Sie die FsRtlInsertPerFileObjectContext Funktion.

Nachdem eine FSRTL_PER_FILEOBJECT_CONTEXT- oder Dateiobjektkontextstruktur einem Dateiobjekt zugeordnet wurde, kann sie abgerufen werden, indem FsRtlLookupPerFileObjectContext aufgerufen oder entfernt wird, indem FsRtlRemovePerFileObjectContext aufgerufen wird (basierend auf den Werten OwnerId und InstanceId).

Dateisystem-Minifiltertreiber dürfen nicht die folgenden Funktionen verwenden:

Stattdessen können Minifilter die folgenden Funktionen verwenden, um Kontextinformationen einem Dateiobjekt zuzuordnen:

Dateisystem-Minifiltertreiber dürfen die FsRtl-Xxx-PerFileObjectContext--Funktionen nicht verwenden. Stattdessen können Minifilter die FltXxxContext Funktionen verwenden, um Kontextinformationen einem Dateiobjekt zuzuordnen. Eine vollständige Liste finden Sie im thema FSRTL_PER_FILEOBJECT_CONTEXT.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows Vista
Header- ntifs.h (einschließlich Fltkernel.h, Ntifs.h)

Siehe auch

DEVICE_OBJECT

DRIVER_OBJECT

FILE_OBJECT

FltAllocateContext-

FltDeleteContext-

FltDeleteStreamHandleContext-

FltGetStreamHandleContext-

FltReleaseContext-

FltSetStreamHandleContext-

FsRtlInitPerFileObjectContext-

FsRtlInsertPerFileObjectContext

FsRtlLookupPerFileObjectContext

FsRtlRemovePerFileObjectContext