FSRTL_COMMON_FCB_HEADER-Struktur (ntifs.h)

Verwenden Sie die FSRTL_COMMON_FCB_HEADER-Struktur nicht außerhalb der FSRTL_ADVANCED_FCB_HEADER-Struktur . Die FSRTL_COMMON_FCB_HEADER-Struktur enthält Kontextinformationen, die ein Dateisystem zu einer Datei, einem Verzeichnis, einem Volume oder einem alternativen Datenstrom verwaltet.

Syntax

typedef struct _FSRTL_COMMON_FCB_HEADER {
  CSHORT        NodeTypeCode;
  CSHORT        NodeByteSize;
  UCHAR         Flags;
  UCHAR         IsFastIoPossible;
  UCHAR         Flags2;
  UCHAR         Reserved : 4;
  UCHAR         Version : 4;
  PERESOURCE    Resource;
  PERESOURCE    PagingIoResource;
  LARGE_INTEGER AllocationSize;
  LARGE_INTEGER FileSize;
  LARGE_INTEGER ValidDataLength;
} FSRTL_COMMON_FCB_HEADER;

Member

NodeTypeCode

Ist für das System reserviert.

NodeByteSize

Ist für das System reserviert.

Flags

Bitmaske von Flags, die die Unterstützung für verschiedene Features angeben. Dieser Member muss eine bitweise OR-Kombination aus mindestens einem der folgenden Werte sein:

Wert Bedeutung
FSRTL_FLAG_FILE_MODIFIED Ist für das System reserviert.
FSRTL_FLAG_FILE_LENGTH_CHANGED Ist für das System reserviert.
FSRTL_FLAG_LIMIT_MODIFIED_PAGES Ist für das System reserviert. Dateisystemtreiber (mit Ausnahme von Filtertreibern), die ein Limit für geänderte Daten für eine Datei festlegen oder löschen müssen, sollten CcSetDirtyPageThreshold aufrufen.
FSRTL_FLAG_ACQUIRE_MAIN_RSRC_EX Ist für das System reserviert.
FSRTL_FLAG_ACQUIRE_MAIN_RSRC_SH Ist für das System reserviert.
FSRTL_FLAG_USER_MAPPED_FILE Der Cache-Manager legt dieses Flag fest, um anzugeben, dass eine Ansicht einer Datei zugeordnet ist.
FSRTL_FLAG_ADVANCED_HEADER Dieses Flag gibt an, dass das Dateisystem FSRTL_ADVANCED_FCB_HEADER anstelle von FSRTL_COMMON_FCB_HEADER in seinen FCB-Strukturen (File Control Block) verwendet. Dieses Flag ist erforderlich, da die Verwendung der FSRTL_COMMON_FCB_HEADER-Struktur außerhalb der FSRTL_ADVANCED_FCB_HEADER-Struktur veraltet ist.
FSRTL_FLAG_EOF_ADVANCE_ACTIVE Ist für das System reserviert.

IsFastIoPossible

Dieser Member muss einer der folgenden Werte sein:

Wert Bedeutung
FastIoIsPossible Schnelle E/A-Vorgänge sind möglich.
FastIoIsQuestionable Für die Datei ist eine exklusive Bytebereichssperre vorhanden. Der Aufrufer sollte die FastIoCheckIfPossible-Routine des Dateisystems aufrufen.
FastIoIsNotPossible Der FCB für die Datei ist fehlerhaft, oder für die Datei ist eine opportunistische Sperre (auch als "oplock" bezeichnet) vorhanden.

Weitere Informationen zu diesen Werten finden Sie in den Referenzeinträgen für FsRtlAreThereCurrentFileLocks, FsRtlCopyRead und FsRtlCopyWrite.

Flags2

Bitmaske von Flags, die das Dateisystem festlegt, um die Unterstützung für verschiedene Features anzugeben. Dieser Member muss mindestens einer der folgenden Werte sein:

Wert Bedeutung
FSRTL_FLAG2_DO_MODIFIED_WRITE Weitere Informationen finden Sie in dieser Tabelle.
FSRTL_FLAG2_PURGE_WHEN_MAPPED Wenn dieses Flag festgelegt ist, löscht der Cache-Manager die Cachezuordnung und löscht sie, wenn ein Benutzer eine Datei zum ersten Mal ordnet.
FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS Dieses Flag gibt an, dass das Dateisystem FSRTL_ADVANCED_FCB_HEADER anstelle von FSRTL_COMMON_FCB_HEADER in seinen FCB-Strukturen verwendet. Dieses Flag ist erforderlich, da die Verwendung der FSRTL_COMMON_FCB_HEADER-Struktur außerhalb der FSRTL_ADVANCED_FCB_HEADER-Struktur veraltet ist.
FSRTL_FLAG2_IS_PAGING_FILE Wenn festgelegt, wird dieser FCB-Header einer Auslagerungsdatei zugeordnet.

Das flag FSRTL_FLAG2_DO_MODIFIED_WRITE wird zusammen mit dem FsContext2-Member des Dateiobjekts für den Dateistream wie folgt verwendet:

  • Wenn das FsContext2-Element des Dateiobjekts nicht NULL ist, stellt der Dateistream eine geöffnete instance einer Datei oder eines Verzeichnisses dar, und der Wert dieses Flags wird vom Betriebssystem ignoriert.

  • Wenn das FsContext2-Element des Dateiobjekts NULL ist und dieses Flag nicht festgelegt ist, ist das Dateiobjekt ein Streamdateiobjekt, und der Stream ist ein MNW-Stream (Modified-No-Write).

  • Wenn das FsContext2-Element des Dateiobjekts NULL ist und dieses Flag festgelegt ist, ist das Dateiobjekt ein Streamdateiobjekt, und der Stream ist beschreibbar.

Reserved

Ist für das System reserviert. Treiber müssen dieses Bitfeld auf Null festlegen.

Version

Ist für das System reserviert. Dieses Bitfeld wird durch das Makro FsRtlSetupAdvancedHeader oder FsRtlSetupAdvancedHeaderEx festgelegt. Ab Windows Vista ist der Wert dieses Bitfelds FSRTL_FCB_HEADER_V1 oder höher. Andernfalls wird der Wert FSRTL_FCB_HEADER_V0. Weitere Informationen finden Sie unter FSRTL_ADVANCED_FCB_HEADER .

Resource

Zeiger auf eine initialisierte Ressourcenvariable, für die das Dateisystem den Speicher bereitstellt, der zum Synchronisieren des E/A-Zugriffs auf den FCB verwendet wird. Die Ressourcenvariable muss aus einem nicht ausgestellten Pool zugeordnet werden.

Filtertreiber sollten diesen Member als undurchsichtig behandeln.

PagingIoResource

Zeiger auf eine zusätzliche Ressourcenvariable, für die das Dateisystem den Speicher bereitstellt, der zum Synchronisieren des ausgelagerten E/A-Zugriffs auf den FCB verwendet wird. Die Ressourcenvariable muss aus einem nicht ausgestellten Pool zugeordnet werden.

Filtertreiber sollten diesen Member als undurchsichtig behandeln.

AllocationSize

Zuordnungsgröße für den Dateistream.

Weitere Informationen zu den Elementen AllocationSize, FileSize und ValidDataLength finden Sie unter CcInitializeCacheMap.

FileSize

Dateigröße des Dateidatenstroms.

ValidDataLength

Gültige Datenlänge des Dateidatenstroms.

Hinweise

Dateisysteme müssen festlegen, dass das FsContext-Element jedes Dateiobjekts auf eine FSRTL_ADVANCED_FCB_HEADER-Struktur verweist. Diese Struktur kann in eine dateisystemspezifische Streamkontextobjektstruktur eingebettet werden (der Rest dieser Struktur ist dateisystemspezifisch). In der Regel ist die FSRTL_ADVANCED_FCB_HEADER Struktur ein Dateisteuerungsblock (FCB). Bei einigen Dateisystemen, die mehrere Datenströme unterstützen, z. B. NTFS, handelt es sich jedoch um einen Streamsteuerungsblock (Stream Control Block, SCB).

Um Filter-Manager und Filterkontexte zu unterstützen, müssen Dateisysteme die FSRTL_ADVANCED_FCB_HEADER-Struktur in ihren Streamkontextobjekten verwenden. Alle Microsoft-Dateisysteme verwenden diese Struktur, und alle Dateisystementwickler von Drittanbietern müssen dies ebenfalls tun. FCBs und SCBs für alle Klassen von offenen Anforderungen, einschließlich volume open requests, müssen diese Struktur enthalten.

Wenn die Datei als Auslagerungsdatei verwendet wird, muss die FSRTL_ADVANCED_FCB_HEADER-Struktur aus einem nicht auslagerungsfreien Pool zugeordnet werden. Andernfalls kann sie aus einem ausgelagerten oder nicht ausgelagerten Pool zugeordnet werden.

Anforderungen

Anforderung Wert
Header ntifs.h (include Ntifs.h, Fltkernel.h)

Weitere Informationen

CcInitializeCacheMap

FSRTL_ADVANCED_FCB_HEADER

FSRTL_PER_STREAM_CONTEXT

FsRtlAreThereCurrentFileLocks

FsRtlCopyRead

FsRtlCopyWrite

FsRtlSetupAdvancedHeader

FsRtlSetupAdvancedHeaderEx