次の方法で共有


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" とも呼ばれます) が存在します。

これらの値の詳細については、FsRtlAreThereCurrentFileLocksFsRtlCopyRead、および 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

システム用に予約されています。 このビット フィールドは、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

ファイル ストリームの割り当てサイズ。

AllocationSizeFileSize、および 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 を含む)

関連項目

ccInitializeCacheMap の

FSRTL_ADVANCED_FCB_HEADER

FSRTL_PER_STREAM_CONTEXT

FsRtlAreThereCurrentFileLocks

FsRtlCopyRead の

FsRtlCopyWrite

FsRtlSetupAdvancedHeader の

FsRtlSetupAdvancedHeaderEx の