FSRTL_PER_STREAM_CONTEXT-Struktur (ntifs.h)

Die FSRTL_PER_STREAM_CONTEXT-Struktur enthält Kontextinformationen, die ein Dateisystemfiltertreiber zu einem Dateidatenstrom verwaltet.

Syntax

typedef struct _FSRTL_PER_STREAM_CONTEXT {
  LIST_ENTRY     Links;
  PVOID          OwnerId;
  PVOID          InstanceId;
  PFREE_FUNCTION FreeCallback;
} FSRTL_PER_STREAM_CONTEXT, *PFSRTL_PER_STREAM_CONTEXT;

Member

Links

Link für diese Struktur in der Liste aller Pro-Stream-Kontextstrukturen, die demselben Dateidatenstrom zugeordnet sind. FsRtlInsertPerStreamContext fügt diesen Member in die Liste aller Pro-Stream-Kontextstrukturen für einen Dateidatenstrom ein. Um einen Zeiger auf den Kopf der Liste aus einem Dateiobjekt abzurufen, verwenden Sie das FsRtlGetPerStreamContextPointer-Makro , und wandeln Sie das Ergebnis in einen PFSRTL_ADVANCED_FCB_HEADER-Zeiger um. Der Listenzeiger ist das FilterContexts-Element in der FCB-Headerstruktur (Advanced File Control Block) für den Dateistream.

OwnerId

Zeiger auf eine vom Filtertreiber zugeordnete Variable, die den Besitzer der Kontextstruktur pro Stream 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 eines Treiber- oder Geräteobjekts. Filtertreiber müssen diesen Member auf einen Wert ungleich NULL festlegen.

InstanceId

Zeiger auf eine vom Filtertreiber zugeordnete Variable, die verwendet werden kann, um zwischen datenstromspezifischen Kontextstrukturen zu unterscheiden, die vom gleichen Filtertreiber erstellt wurden. Das Format dieser Variablen ist filtertreiberspezifisch. Filterautoren sollten einen Wert auswählen, der sowohl sinnvoll als auch praktisch ist, z. B. die Adresse des Streamkontextobjekts für den Dateidatenstrom. (Verwenden Sie zum Abrufen dieser Adresse aus einem Dateiobjekt das Makro FsRtlGetPerStreamContextPointer .)

Dieser Member ist optional und kann NULL sein.

FreeCallback

Zeiger auf eine Rückrufroutine, die die Kontextstruktur pro Stream freigibt. Diese Routine und ihre Parameter sind wie folgt definiert:

VOID
(*PFREE_FUNCTION) (
     IN PVOID Buffer
     );

Buffer

Zeiger auf die frei zu gebende FSRTL_PER_STREAM_CONTEXT-Struktur .

Hinweise

Dateisystemfiltertreiber können eine FSRTL_PER_STREAM_CONTEXT-Struktur verwenden, um Kontextinformationen für einen Dateidatenstrom zu verwalten. Diese Struktur kann so verwendet werden, wie sie ist, oder eingebettet in eine treiberdefinierte Kontextstruktur pro Stream.

Wenn ein Dateisystem das Streamkontextobjekt für einen Dateidatenstrom abreißt, muss es FsRtlTeardownPerStreamContexts aufrufen, wodurch wiederum die FreeCallback-Routinen aller dem Dateidatenstrom zugeordneten Kontextstrukturen pro Stream aufgerufen werden.

Hinweis Die FreeCallback-Routine kann nicht rekursiv in das Dateisystem aufrufen oder Dateisystemressourcen abrufen. Außerdem muss diese Routine davon ausgehen, dass das Dateiobjekt für den Dateidatenstrom bereits freigegeben wurde.
 
Die FSRTL_PER_STREAM_CONTEXT-Struktur kann aus einem ausgelagerten oder nicht ausgelagerten Pool zugeordnet werden.

Das FsRtlSupportsPerStreamContexts-Makro bestimmt, ob ein Dateisystem Für einen bestimmten Dateidatenstrom Datenstrom-Kontexte pro Stream unterstützt.

BOOLEAN FsRtlSupportsPerStreamContexts(
  [in] PFILE_OBJECT FileObject
);

Parameter

FileObject [in]

PFILE_OBJECT

Ein Zeiger auf ein Dateiobjekt für den Dateistream.

Rückgabewert

BOOLEAN

Das FsRtlSupportsPerStreamContexts-Makro gibt TRUE zurück, wenn das Dateisystem datenstromspezifische Kontexte für den Dateidatenstrom unterstützt, andernfalls FALSE .

Dateisystemfiltertreiber rufen FsRtlSupportsPerStreamContexts auf, um zu bestimmen, ob das zugrunde liegende Dateisystem Datenstromkontexte pro Stream unterstützt, die durch ein bestimmtes Dateiobjekt dargestellt werden. Beachten Sie, dass ein Dateisystem für einige Dateitypen möglicherweise Datenstromkontexte unterstützt, für andere jedoch nicht. Beispielsweise unterstützen NTFS und FAT derzeit keine Datenstromkontexte für Auslagerungsdateien.

Weitere Informationen finden Sie unter Nachverfolgen Per-Stream Kontexts in einem Legacy-Dateisystemfiltertreiber.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Diese Struktur ist Windows XP.
Kopfzeile ntifs.h (include Ntifs.h)

Weitere Informationen

FSRTL_ADVANCED_FCB_HEADER

FSRTL_COMMON_FCB_HEADER

FsRtlGetPerStreamContextPointer

FsRtlInsertPerStreamContext

FsRtlLookupPerStreamContext

FsRtlRemovePerStreamContext

FsRtlTeardownPerStreamContexts

PFREE_FUNCTION

Nachverfolgen Per-Stream Kontexts in einem Legacy-Dateisystemfiltertreiber