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」)。 |
如需這些值的詳細資訊,請參閱 FsRtlAreThereCurrentFileLocks、FsRtlCopyRead和 FsRtlCopyWrite的參考專案。
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
保留供系統使用。 此位欄位是由 FsRtlSetupAdvancedHeader 或 FsRtlSetupAdvancedHeaderEx 巨集設定。 從 Windows Vista 開始,此位字段的值會FSRTL_FCB_HEADER_V1或更新;否則,此值會FSRTL_FCB_HEADER_V0。 如需詳細資訊,請參閱 FSRTL_ADVANCED_FCB_HEADER。
Resource
初始化之資源變數的指標,文件系統會提供用來同步處理FCB之I/O存取的記憶體。 資源變數必須從非分頁集區配置。
篩選驅動程式應將此成員視為不透明。
PagingIoResource
其他資源變數的指標,檔案系統會提供用來同步處理FCB分頁I/O存取的記憶體。 資源變數必須從非分頁集區配置。
篩選驅動程式應將此成員視為不透明。
AllocationSize
檔案數據流的配置大小。
如需 AllocationSize、FileSize和 ValidDataLength 成員的詳細資訊,請參閱 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) |