共用方式為


FSRTL_COMMON_FCB_HEADER結構 (ntifs.h)

請勿在 FSRTL_ADVANCED_FCB_HEADER 結構之外使用 FSRTL_COMMON_FCB_HEADER 結構。 FSRTL_COMMON_FCB_HEADER 結構包含檔案系統維護檔案、目錄、磁碟區或替代數據流的內容資訊。

語法

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;

成員

NodeTypeCode

保留供系統使用。

NodeByteSize

保留供系統使用。

Flags

指出支持各種功能的旗標位掩碼。 這個成員必須是下列一或多個值的位 OR 組合:

價值 意義
FSRTL_FLAG_FILE_MODIFIED 保留供系統使用。
FSRTL_FLAG_FILE_LENGTH_CHANGED 保留供系統使用。
FSRTL_FLAG_LIMIT_MODIFIED_PAGES 保留供系統使用。 檔案系統驅動程式(除了篩選驅動程式除外)必須設定或清除檔案修改的數據限制,應該呼叫 CcSetDirtyPageThreshold
FSRTL_FLAG_ACQUIRE_MAIN_RSRC_EX 保留供系統使用。
FSRTL_FLAG_ACQUIRE_MAIN_RSRC_SH 保留供系統使用。
FSRTL_FLAG_USER_MAPPED_FILE 快取管理員會設定此旗標,指出檢視已對應至檔案。
FSRTL_FLAG_ADVANCED_HEADER 此旗標表示文件系統正在使用 FSRTL_ADVANCED_FCB_HEADER,而不是在其檔案控制區塊 (FCB) 結構中使用FSRTL_COMMON_FCB_HEADER。 此旗標是必要的,因為使用 FSRTL_ADVANCED_FCB_HEADER 結構外部的 FSRTL_COMMON_FCB_HEADER 結構已被取代。
FSRTL_FLAG_EOF_ADVANCE_ACTIVE 保留供系統使用。

IsFastIoPossible

這個成員必須是下列其中一個值:

價值 意義
FastIoIs 可能的 快速 I/O 是可能的。
FastIoIsQuestionable 檔案存在獨佔位元組範圍鎖定。 呼叫端應該呼叫文件系統的 FastIoCheckIfPossible 例程。
FastIoIsNotpossible 檔案的FCB不正確,或檔案存在機會鎖定(也稱為「oplock」)。

如需這些值的詳細資訊,請參閱 FsRtlAreThereCurrentFileLocksFsRtlCopyReadFsRtlCopyWrite的參考專案。

Flags2

文件系統設定的旗標位掩碼,表示支援各種功能。 這個成員必須是下列其中一或多個值:

價值 意義
FSRTL_FLAG2_DO_MODIFIED_WRITE 請參閱下表後面的詳細數據。
FSRTL_FLAG2_PURGE_WHEN_MAPPED 如果已設定此旗標,快取管理員會在使用者第一次對應檔案時排清並清除快取對應。
FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS 此旗標表示文件系統使用 FSRTL_ADVANCED_FCB_HEADER,而不是在其FCB結構中使用FSRTL_COMMON_FCB_HEADER。 此旗標是必要的,因為使用 FSRTL_ADVANCED_FCB_HEADER 結構外部的 FSRTL_COMMON_FCB_HEADER 結構已被取代。
FSRTL_FLAG2_IS_PAGING_FILE 如果設定,這個FCB標頭會與頁面檔案相關聯。

FSRTL_FLAG2_DO_MODIFIED_WRITE旗標會與檔案數據流之檔案物件的 FsContext2 成員搭配使用,如下所示:

  • 如果檔案物件的 FsContext2 成員不是 NULL,則檔案數據流代表檔案或目錄的開啟實例,而且操作系統會忽略此旗標的值。

  • 如果 FsContext2 檔案對象的成員為 NULL,而且未設定此旗標,則檔案物件為數據流檔案物件,且數據流是已修改的無寫入 (MNW) 數據流。

  • 如果 FsContext2 檔案對象的成員為 NULL,且已設定此旗標,則檔案物件為數據流檔案物件,且數據流可寫入。

Reserved

保留供系統使用。 驅動程式必須將這個位欄位元設定為零。

Version

保留供系統使用。 此位欄位是由 FsRtlSetupAdvancedHeaderFsRtlSetupAdvancedHeaderEx 巨集設定。 從 Windows Vista 開始,此位字段的值會FSRTL_FCB_HEADER_V1或更新;否則,此值會FSRTL_FCB_HEADER_V0。 如需詳細資訊,請參閱 FSRTL_ADVANCED_FCB_HEADER

Resource

初始化之資源變數的指標,文件系統會提供用來同步處理FCB之I/O存取的記憶體。 資源變數必須從非分頁集區配置。

篩選驅動程式應將此成員視為不透明。

PagingIoResource

其他資源變數的指標,檔案系統會提供用來同步處理FCB分頁I/O存取的記憶體。 資源變數必須從非分頁集區配置。

篩選驅動程式應將此成員視為不透明。

AllocationSize

檔案數據流的配置大小。

如需 AllocationSizeFileSizeValidDataLength 成員的詳細資訊,請參閱 CcInitializeCacheMap

FileSize

檔案數據流的檔案大小。

ValidDataLength

檔案數據流的有效數據長度。

言論

文件系統必須設定每個檔案物件的 FsContext 成員,以指向 FSRTL_ADVANCED_FCB_HEADER 結構。 這個結構可以內嵌在文件系統特定的數據流內容對象結構內(這個結構的其餘部分是文件系統專屬的)。 通常,FSRTL_ADVANCED_FCB_HEADER 結構是檔案控制區塊 (FCB)。 不過,在某些支援多個數據流的文件系統上,例如NTFS,它是數據流控制區塊(SCB)。

若要支援篩選管理員和篩選內容,檔系統必須在其數據流內容物件中使用 FSRTL_ADVANCED_FCB_HEADER 結構。 所有Microsoft文件系統都使用此結構,而且所有第三方文件系統開發人員也必須這樣做。 所有開啟要求類別的 FBB 和 SCB,包括大量開啟要求,都必須包含此結構。

如果檔案作為分頁檔案使用,則必須從非分頁集區配置 FSRTL_ADVANCED_FCB_HEADER 結構。 否則,可以從分頁集區或非分頁集區進行配置。

要求

要求 價值
標頭 ntifs.h (include Ntifs.h, Fltkernel.h)

另請參閱

CcInitializeCacheMap

FSRTL_ADVANCED_FCB_HEADER

FSRTL_PER_STREAM_CONTEXT

FsRtlAreThereCurrentFileLocks

FsRtlCopyRead

FsRtlCopyWrite

FsRtlSetupAdvancedHeader

FsRtlSetupAdvancedHeaderEx