次の方法で共有


File-Backed とページ-File-Backed セクション

すべてのメモリ セクションは、共有するデータを一時的または永続的に格納できるディスク ファイルによってサポート ("バックアップ") されます。

セクションを作成するときに、セクションのバックアップ先となる特定のデータ ファイルを識別できます。 このようなセクションは、 ファイルベースの セクションと呼ばれます。

バッキング ファイルを識別しない場合、セクションはシステムのページング ファイルによってサポートされ、セクションは ページ ファイルベース のセクションと呼ばれます。 ファイルバックセクションのデータは、ディスクに恒久的に書き込むことができます。 ページ ファイルでバックアップされたセクションのデータは、ディスクに永続的に書き込まれることはありません。

ファイルベースのセクションには、ディスク上の実際のファイルの内容が反映されます。つまり、メモリ マップト ファイルです。 特定のファイルに基づくセクション内のメモリの場所へのアクセスは、関連付けられているファイル内の場所へのアクセスに対応します。

プロセスがビューを読み取り専用としてマップする場合、ビューから読み取られたデータはファイルから透過的に読み取られます。 同様に、プロセスがビューを読み取り/書き込みとしてマップする場合、ビューから読み取られたり、ビューに書き込まれたデータは、透過的に読み取られたり、ファイルに書き込まれたりします。 いずれの場合も、ビューの仮想メモリはページ ファイル内の領域を使用しません。

ファイルベースのセクションは、書き込み時のコピーとしてマップすることもできます。 その場合、ビューのデータはファイルから読み取られますが、ビューに書き込まれたデータはファイルに書き込まれません。代わりに、最終的なビューがマップ解除され、セクションの最後のハンドルが閉じられた後に破棄されます。

ページ ファイルベースのセクションは、ディスク上の明示的なファイルではなく、ページ ファイルによってサポートされます。 ページ ファイルベースのセクションに加えられた変更は、セクション オブジェクトが破棄された後で自動的に破棄されます。 ページ ファイルベースのセクションは、2 つのプロセス間の共有メモリ セグメントとして使用できます。

ファイルに基づくかどうかに関係なく、任意のセクションを 2 つのプロセス間で共有できます。 同じ物理メモリ アドレス範囲が、各プロセス内の仮想メモリ アドレス範囲にマップされます (ただし、必ずしも同じ仮想アドレスにマップされるわけではありません)。