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