質問: (pint)mapviewoffile( ________hmap, file_map_write, 0, 0, 0); ____closehandle(hmap); ____return pi; } こんな感じの関数で変数をプロセス間共有したいのですが、 ファイルマッピングオブジェクトが毎回生成されてしまい、 変数を共有できません。 先にclosehandleするのは後の処理がunmapviewoffileするだけで すむからです。変則的ですが、mapviewoffile呼び出ししている以上 hmapが指すカーネルオブジェクトは開放されないと思うのですが。 mapviewoffileがカーネルオブジェクトの内部カウンタを進めていない、 ということでしょうか?それではマルチスレッドで扱えないような気が するのですが、私の認識のどこが間違っているのでしょうか? よろしくご指導お願い申し上げます。
回答: #1です。補足になります。 msdnではunmapviewoffileについて•windows 95:1 つのファイルの最後のビューがまだアンマップされていない場合、そのファイルは引き続き開いていて、元のファイルハンドルと同じ共有の制約が適用されます。 •windows nt/2000:1 つのファイルの最後のビューがまだアンマップされていない場合、そのファイルは引き続き開いていますが、共有の制約は適用されません。とありました。つまり、win9x系ではyak3141さんの意図する通りに動作するのかもしれません。