Freigeben über


FSRTL_PER_STREAM_CONTEXT Struktur (ntifs.h)

Die FSRTL_PER_STREAM_CONTEXT Struktur enthält Kontextinformationen, die ein Dateisystemfiltertreiber über einen 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;

Angehörige

Links

Verknüpfen Sie diese Struktur in der Liste aller Kontextstrukturen pro Datenstrom, die demselben Dateidatenstrom zugeordnet sind. FsRtlInsertPerStreamContext fügt dieses Element in die Liste aller Kontextstrukturen pro Stream 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 der FilterContexts Member in der Erweiterten Dateisteuerungsblock-Headerstruktur (FCB) für den Dateidatenstrom.

OwnerId

Zeigen Sie auf eine vom Filtertreiber zugewiesene Variable, die den Besitzer der Kontextstruktur pro Datenstrom 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 Treiberobjekts oder Geräteobjekts. Filtertreiber müssen dieses Element auf einen Wert ohneNULL festlegen.

InstanceId

Zeiger auf eine vom Filtertreiber zugewiesene Variable, die verwendet werden kann, um zwischen Kontextstrukturen pro Datenstrom 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 Streamkontextobjekts für den Dateidatenstrom. (Um diese Adresse aus einem Dateiobjekt abzurufen, verwenden Sie das FsRtlGetPerStreamContextPointer Makro.)

Dieses Element ist optional und kann NULL-sein.

FreeCallback

Zeigen Sie auf eine Rückrufroutine, die die Kontextstruktur pro Datenstrom freigibt. Diese Routine und ihre Parameter werden wie folgt definiert:

VOID
(*PFREE_FUNCTION) (
     IN PVOID Buffer
     );

Puffer

Zeigen Sie auf die FSRTL_PER_STREAM_CONTEXT Struktur, um sie frei zu geben.

Bemerkungen

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

Wenn ein Dateisystem das Streamkontextobjekt für einen Dateidatenstrom herunterreißt, muss es FsRtlTeardownPerStreamContextsaufrufen, wodurch wiederum die FreeCallback- Routinen aller datenstrombezogenen Kontextstrukturen aufgerufen werden, die dem Dateidatenstrom zugeordnet sind.

Note The FreeCallback routine cannot rekursive call down into the file system or acquire any file system resources. Außerdem muss diese Routine davon ausgehen, dass das Dateiobjekt für den Dateistream bereits freigegeben wurde.
 
Die FSRTL_PER_STREAM_CONTEXT Struktur kann aus seitenseitigem oder nicht seitenseitigem Pool zugeordnet werden.

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

BOOLEAN FsRtlSupportsPerStreamContexts(
  [in] PFILE_OBJECT FileObject
);

Parameter

FileObject [in]

PFILE_OBJECT

Ein Zeiger auf ein Dateiobjekt für den Dateidatenstrom.

Rückgabewert

BOOLESCHEN

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

Dateisystemfiltertreiber rufen FsRtlSupportsPerStreamContexts auf, um zu bestimmen, ob das zugrunde liegende Dateisystem Kontexte pro Stream für den Dateidatenstrom unterstützt, der durch ein bestimmtes Dateiobjekt dargestellt wird. Beachten Sie, dass ein Dateisystem möglicherweise Kontexte pro Stream für einige Dateitypen unterstützt, aber nicht für andere. Ntfs und FAT unterstützen z. B. derzeit keine Kontexte pro Datenstrom für das Auslagerungen von Dateien.

Weitere Informationen finden Sie unter Tracking Per-Stream Context in einem Legacy File System Filter Driver.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Diese Struktur ist Windows XP.
Header- ntifs.h (einschließlich Ntifs.h)

Siehe auch

FSRTL_ADVANCED_FCB_HEADER

FSRTL_COMMON_FCB_HEADER

FsRtlGetPerStreamContextPointer-

FsRtlInsertPerStreamContext-

FsRtlLookupPerStreamContext-

FsRtlRemovePerStreamContext-

FsRtlTeardownPerStreamContexts

PFREE_FUNCTION

Nachverfolgen Per-Stream Kontexts in einem älteren Dateisystemfiltertreiber