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
さまざまな機能のサポートを示すフラグのビットマスク。 このメンバーは、次の 1 つ以上の値のビットごとの 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 | このフラグは、ファイル・システムがそのファイル制御ブロック (FCB) 構造でFSRTL_COMMON_FCB_HEADERの代わりに FSRTL_ADVANCED_FCB_HEADER を使用していることを示します。 このフラグは、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
さまざまな機能のサポートを示すためにファイル システムが設定するフラグのビットマスク。 このメンバーは、次の 1 つ以上の値である必要があります。
価値 | 意味 |
---|---|
FSRTL_FLAG2_DO_MODIFIED_WRITE | 次の表の詳細を参照してください。 |
FSRTL_FLAG2_PURGE_WHEN_MAPPED | このフラグが設定されている場合、キャッシュ マネージャーは、ユーザーが最初にファイルをマップするときにキャッシュ マップをフラッシュして消去します。 |
FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS | このフラグは、ファイル・システムがその FCB 構造体でFSRTL_COMMON_FCB_HEADERの代わりに FSRTL_ADVANCED_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
システム用に予約されています。 ドライバーは、このビット フィールドを 0 に設定する必要があります。
Version
システム用に予約されています。 このビット フィールドは、
Resource
初期化されたリソース変数へのポインター。ファイル システムは、FCB への I/O アクセスの同期に使用されるストレージを提供します。 リソース変数は、非ページ プールから割り当てる必要があります。
フィルター ドライバーは、このメンバーを不透明として扱う必要があります。
PagingIoResource
FCB へのページング I/O アクセスの同期に使用されるストレージをファイル システムが提供する追加のリソース変数へのポインター。 リソース変数は、非ページ プールから割り当てる必要があります。
フィルター ドライバーは、このメンバーを不透明として扱う必要があります。
AllocationSize
ファイル ストリームの割り当てサイズ。
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 の
FsRtlCopyRead の
FsRtlSetupAdvancedHeader の
FsRtlSetupAdvancedHeaderEx の