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) |