共用方式為


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」) 的機率鎖定 (。

如需這些值的詳細資訊,請參閱 FsRtlAreThereCurrentFileLocksFsRtlCopyRead 和 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

保留供系統使用。 此位欄位是由 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 檔案系統都使用此結構,而且所有第三方文件系統開發人員也必須這麼做。 所有開啟要求類別的FCB和SCB,包括磁碟區開啟要求,都必須包含這個結構。

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

規格需求

需求
標頭 ntifs.h (包括 Ntifs.h、Fltkernel.h)

另請參閱

CcInitializeCacheMap

FSRTL_ADVANCED_FCB_HEADER

FSRTL_PER_STREAM_CONTEXT

FsRtlAreThereCurrentFileLocks

FsRtlCopyRead

FsRtlCopyWrite

FsRtlSetupAdvancedHeader

FsRtlSetupAdvancedHeaderEx