次の方法で共有


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. 初期化された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 を含む)

こちらもご覧ください

CcInitializeCacheMap

DEVICE_OBJECT

FILE_OBJECT

FOBX

FSRTL_ADVANCED_FCB_HEADER

IoGetDeviceObjectPointer

MmFlushImageSection

ObDereferenceObject