SECTION_OBJECT_POINTERS構造体 (wdm.h)
ファイル システムまたはリダイレクター ドライバーによって割り当てられる SECTION_OBJECT_POINTERS 構造体は、ファイル ストリームのファイル マッピングとキャッシュ関連情報を格納するためにメモリ マネージャーとキャッシュ マネージャーによって使用されます。
構文
typedef struct _SECTION_OBJECT_POINTERS {
PVOID DataSectionObject;
PVOID SharedCacheMap;
PVOID ImageSectionObject;
} SECTION_OBJECT_POINTERS;
メンバーズ
DataSectionObject
データ ファイル ストリームの状態情報を追跡するために使用されるデータ セクション オブジェクト (つまり、CONTROL_AREA 構造体) への不透明なポインター。 メモリ マネージャーは、オペレーティング システムが最初にデータ ストリームをキャッシュするときに、このメンバーを設定します。 NULL 値は、データ ストリームが現在メモリ内にないことを示します。ただし、この値はいつでも変更できます。
SharedCacheMap
データ ファイル ストリームにマップされたビューを追跡するために使用されるキャッシュ マップ オブジェクト (つまり、SHARED_CACHE_MAP 構造体) への不透明なポインター。 キャッシュ マネージャーは、オペレーティング システムが最初にストリームをキャッシュするときに、このメンバーを設定します。 NULL 値は、データ ストリームが現在キャッシュされていないことを示します。ただし、この値はいつでも変更できます。
ImageSectionObject
実行可能ファイル ストリームの状態情報を追跡するために使用されるイメージ セクション オブジェクト (つまり、CONTROL_AREA 構造体) への不透明なポインター。 メモリ マネージャーは、ストリームの実行可能イメージ セクションが作成されるたびに、このメンバーを設定します。 NULL 値は、実行可能イメージが現在メモリ内にないことを示します。ただし、この値はいつでも変更できます。
備考
SECTION_OBJECT_POINTERS 構造体は、ファイル オブジェクトをファイル ストリームのセクション オブジェクトにリンクします。 つまり、SECTION_OBJECT_POINTERS 構造体は、そのメンバーを介して、特定のファイル オブジェクトを仮想メモリ制御構造体に接続します。これにより、ストリームの内容がメモリ内にあるときに追跡され、存在しないときにオペレーティング システムがそれらの内容をフェッチできるようになります。
SECTION_OBJECT_POINTERS 構造体とファイル ストリームの間には 1 対 1 のリレーションシップがあります。 複数のファイル オブジェクトを特定のファイル ストリームに関連付けることができ、それぞれがストリームの開いているインスタンスを表します。 ただし、特定のストリームに関連付けることができる SECTION_OBJECT_POINTERS 構造体は 1 つだけです。 ストリームに複数のファイル オブジェクトがある場合、すべてのファイル オブジェクトの SectionObjectPointer メンバーは、同じ SECTION_OBJECT_POINTERS 構造 (ストリームに関連付けられている) を指す必要があります。
最初のファイル ストリームを開く要求の場合、ファイル システムまたはリダイレクター ドライバーは次の手順を実行する必要があります。
非ページ プールから SECTION_OBJECT_POINTERS 構造体を割り当てます。
割り当てられた
SECTION_OBJECT_POINTERS 構造体のすべてのメンバーを、NULLをするように初期化します。 関連付けファイル オブジェクトの SectionObjectPointer メンバーを、初期化された SECTION_OBJECT_POINTERS 構造体を指すよう設定します。
同じファイル ストリームに対する後続のオープン要求の場合、ファイル システムまたはリダイレクター ドライバーは、関連付けられたファイル オブジェクトの SectionObjectPointer メンバーを、ファイル ストリームに対して以前に割り当てられた SECTION_OBJECT_POINTERS 構造体を指すよう設定する必要があります。
警告
ファイル システム フィルター ドライバーは、基になるファイル システムがメンバーの同期を担当するため、SECTION_OBJECT_POINTERS 構造体のメンバーを不透明として扱う必要があります。そのため、値はいつでも変更される可能性があります。
ファイルは、ファイル システムに応じて 1 つ以上のストリームで構成されます。 詳細については、「ファイル ストリーム、ストリーム コンテキスト、および Per-Stream コンテキスト」を参照してください。
必要条件
要件 | 価値 |
---|---|
ヘッダー | wdm.h (Wdm.h、Ntddk.h、Ntifs.h、Fltkernel.h を含む) |
関連項目
ccInitializeCacheMap の
IoGetDeviceObjectPointer の
mmFlushImageSection の