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 ,而不是在其檔案控制區塊中使用FSRTL_COMMON_FCB_HEADER, (FCB) 結構。 這是必要旗標,因為使用FSRTL_ADVANCED_FCB_HEADER結構以外的FSRTL_COMMON_FCB_HEADER結構已被取代。 |
FSRTL_FLAG_EOF_ADVANCE_ACTIVE | 保留供系統使用。 |
IsFastIoPossible
這個成員必須是下列其中一個值:
值 | 意義 |
---|---|
FastIoIsPossible | 可以快速 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 檔案系統都使用此結構,而且所有第三方文件系統開發人員也必須這麼做。 所有開啟要求類別的FCB和SCB,包括磁碟區開啟要求,都必須包含這個結構。
如果檔案做為分頁檔案使用,則必須從非分頁集區配置 FSRTL_ADVANCED_FCB_HEADER 結構。 否則,可以從分頁或非分頁集區配置。
規格需求
需求 | 值 |
---|---|
標頭 | ntifs.h (包括 Ntifs.h、Fltkernel.h) |