#出張中でしたので、激しく遅いレスです

On Fri, 01 Aug 2003 01:01:38 +0900
"S.Suzuki" <d...@ca2.so-net.ne.jp> wrote:

> (OSのキャッシュサイズの限界を超えてのテストはしていないのですが、、、)
> じつは、テストプログラムをシンプルにして再度腰をすえて実験をしたのですが、
> 結果としては
> 最初のメールの質問1、2ともにNGでした。。。。
> つまり、ノーマルファイル・ページファイルを問わず、2度目に最初の
> マッピングサイズよりも大きい値を指定しても、最初のサイズを越えた
> アクセスはできませんでした。。。

  拡張できないのはある意味で当然なのかもと言う気がして来まし
た。メモリサイズを拡張するためには現在使っているメモリの後ろ
に連続して開き領域が存在する必要があります。もし後から拡張を
行うのであれば・・・

1.CreateFileMappingで連続した新メモリを確保する。
2.MapViewOfFileで新メモリをマッピング
3.以前の旧メモリから新メモリにデータをコピー。
4.UnmapViewOfFileで旧メモリをアンマップ。
5.CloseHandleで旧メモリを破棄。
6.全プロセスでMapViewOfFileを使い再度アドレスを取得。

  と言うステップを各プロセスに排他をかけた状態で行はなくては
ならないでしょう。MapViewOfFileでメモリアドレスに変換した状
態で確保しているなら、何らかのイベントを全プロセスに通知して
再度メモリアドレスを取得しなおしてもらはないといけないでしょ
うし。

> 結局メモリマップトファイルによる動的なメモリ共有は

  私なら共有メモリに操作を行う部分をDLLにカプセル化。
  上記のようなメモリ拡張操作をDLL内に実装します。

-----------------------------------------------------------
   ヘヘ   ヘヘ       甕星 (Microsoft MVP)
  ミ''ミ ミ..ミ      E-Mail  : m...@abox9.so-net.ne.jp
 ヽ(  )   (  )ζ    
===========================================================