次の方法で共有


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 構造 (ストリームに関連付けられている) を指す必要があります。

最初のファイル ストリームを開く要求の場合、ファイル システムまたはリダイレクター ドライバーは次の手順を実行する必要があります。

  1. 非ページ プールから SECTION_OBJECT_POINTERS 構造体を割り当てます。

  2. 割り当てられた SECTION_OBJECT_POINTERS 構造体のすべてのメンバーを、NULLを するように初期化します。

  3. 関連付けファイル オブジェクトの 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 の

DEVICE_OBJECT

FILE_OBJECT

FOBX

FSRTL_ADVANCED_FCB_HEADER

IoGetDeviceObjectPointer の

mmFlushImageSection の

ObDereferenceObject