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 に初期化 します。
初期化されたSECTION_OBJECT_POINTERS構造体を指す関連付けファイル オブジェクトの SectionObjectPointer メンバー を 設定します。
同じファイル ストリームに対する後続のオープン要求の場合、ファイル システムまたはリダイレクター ドライバーは、関連付けられたファイル オブジェクトの SectionObjectPointer メンバーを、以前に割り当てられたファイル ストリーム のSECTION_OBJECT_POINTERS 構造体を指すよう設定する必要があります。
警告
ファイル システム フィルター ドライバーは、基になるファイル システムがメンバーの同期を担当するため、 SECTION_OBJECT_POINTERS 構造体のメンバーを不透明として扱う必要があります。したがって、いつでも値を変更できます。
ファイルは、ファイル システムに応じて 1 つ以上のストリームで構成されます。 詳細については、「ファイル ストリーム」、「Stream コンテキスト」、「Per-Stream コンテキスト」を参照してください。
要件
要件 | 値 |
---|---|
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h、Fltkernel.h を含む) |