Freigeben über


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 über eine Datei, ein Verzeichnis, ein Volume oder einen 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;

Angehörige

NodeTypeCode

Reserviert für die Systemverwendung.

NodeByteSize

Reserviert für die Systemverwendung.

Flags

Bitmaske von Flags, die die Unterstützung für verschiedene Features angeben. Dieses Element muss eine bitweise ODER-Kombination aus einem oder mehreren der folgenden Werte sein:

Wert Bedeutung
FSRTL_FLAG_FILE_MODIFIED Reserviert für die Systemverwendung.
FSRTL_FLAG_FILE_LENGTH_CHANGED Reserviert für die Systemverwendung.
FSRTL_FLAG_LIMIT_MODIFIED_PAGES Reserviert für die Systemverwendung. Dateisystemtreiber (mit Ausnahme von Filtertreibern), die einen Grenzwert für geänderte Daten für eine Datei festlegen oder löschen müssen, sollten CcSetDirtyPageThresholdaufrufen.
FSRTL_FLAG_ACQUIRE_MAIN_RSRC_EX Reserviert für die Systemverwendung.
FSRTL_FLAG_ACQUIRE_MAIN_RSRC_SH Reserviert für die Systemverwendung.
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 Reserviert für die Systemverwendung.

IsFastIoPossible

Dieses Element muss einen der folgenden Werte aufweisen:

Wert Bedeutung
FastIoIsPossible- Schnelle E/A ist 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 schlecht, oder eine opportunistische Sperre (auch als "oplock" bezeichnet) ist für die Datei vorhanden.

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

Flags2

Bitmaske von Flags, die vom Dateisystem festgelegt werden, um die Unterstützung für verschiedene Features anzugeben. Dieses Element muss mindestens einen der folgenden Werte aufweisen:

Wert Bedeutung
FSRTL_FLAG2_DO_MODIFIED_WRITE Weitere Informationen finden Sie in dieser Tabelle.
FSRTL_FLAG2_PURGE_WHEN_MAPPED Wenn dieses Kennzeichen festgelegt ist, löscht der Cache-Manager die Cachezuordnung, wenn ein Benutzer eine Datei zum ersten Mal zuordnet.
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 Bei Festlegung wird dieser FCB-Header einer Seitendatei zugeordnet.

Das FSRTL_FLAG2_DO_MODIFIED_WRITE Flag wird zusammen mit dem FsContext2 Element des Dateiobjekts für den Dateidatenstrom wie folgt verwendet:

  • Wenn das FsContext2 Mitglied des Dateiobjekts ungleich NULL ist, stellt der Dateidatenstrom eine geöffnete Instanz 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 Datenstromdateiobjekt, und der Datenstrom ist ein MNW-Datenstrom (Modified-no-Write).

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

Reserved

Reserviert für die Systemverwendung. Treiber müssen dieses Bitfeld auf Null festlegen.

Version

Reserviert für die Systemverwendung. Dieses Bitfeld wird vom FsRtlSetupAdvancedHeader oder FsRtlSetupAdvancedHeaderEx Makro festgelegt. Ab Windows Vista ist der Wert dieses Bitfelds FSRTL_FCB_HEADER_V1 oder höher; andernfalls ist 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 seitengebundenen Pool zugeordnet werden.

Filtertreiber sollten dieses Element als undurchsichtig behandeln.

PagingIoResource

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

Filtertreiber sollten dieses Element als undurchsichtig behandeln.

AllocationSize

Zuordnungsgröße für den Dateidatenstrom.

Weitere Informationen zum AllocationSize, FileSizeund ValidDataLength-Member finden Sie unter CcInitializeCacheMap.

FileSize

Dateigröße des Dateidatenstroms.

ValidDataLength

Gültige Datenlänge des Dateidatenstroms.

Bemerkungen

Dateisysteme müssen das FsContext Element jedes Dateiobjekts festlegen, um auf eine FSRTL_ADVANCED_FCB_HEADER Struktur zu verweisen. 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 (File Control Block, FCB). Bei einigen Dateisystemen, die mehrere Datenströme unterstützen, z. B. NTFS, handelt es sich jedoch um einen Datenstromsteuerungsblock (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 offener 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 nicht seitenseitigem Pool zugewiesen werden. Andernfalls kann sie aus dem ausgelagerten oder nicht seitengebundenen Pool zugewiesen werden.

Anforderungen

Anforderung Wert
Header- ntifs.h (einschließlich Ntifs.h, Fltkernel.h)

Siehe auch

CcInitializeCacheMap-

FSRTL_ADVANCED_FCB_HEADER

FSRTL_PER_STREAM_CONTEXT

FsRtlAreThereCurrentFileLocks

FsRtlCopyRead-

FsRtlCopyWrite

FsRtlSetupAdvancedHeader

FsRtlSetupAdvancedHeaderEx