- 締切済み
共有メモリ メモリマップドファイルについての質問です。
共有メモリ メモリマップドファイルについての質問です。 visual C++ を用いて、異なるアプリケーション間でデータを共有するプログラムを作っています。 ネットで検索してみたところその内容を説明しているホームページがいくつかあったのですが、どうしても完成にたどり着くことができません。 どのようにしたらよいのでしょうか??
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- yuipu
- ベストアンサー率38% (18/47)
こんなサイトがありました。 http://homepage2.nifty.com/c_lang/intro2/no_114.htm メモリマップファイルについては、私自身はFile I/O代わりに使ったことはありますが、共有の場合は排他制御が必要になるかもしれませんね。
- magicalpass
- ベストアンサー率58% (378/648)
基本的には (1)CreateFileMapping関数でメモリマップドファイルを生成 (2)MapViewOfFile関数でメモリマップのアドレスを取得 ~ 共有メモリ使用 ~ (3)UnmapViewOfFile関数でメモリマップを解放 (4)CloseHandleでメモリマップドファイルのハンドルを解放 という流れです。Mutexとかセマフォで排他制御する場合もありますが、使用状況によっては必須ではありません。 (1)の時に同じ名前を指定すれば複数のプロセスでメモリを共有することが出来ます。 この名前はプログラミングの設計上の約束事だから、アプリが違えば同じ名前がわからないとかアホなことは言わないように。 (2)は共有メモリの構成をどう使うかあらかじめきちんと設計しておかないと齟齬をきたすことになりますので注意。 排他制御の多くは双方から同時に書き込んだらデータに齟齬が生じるとか、そんなところから必要が出て来るので、それぞれの書き込み場所をわけてデータのやり取りを一方通行にする場合はとくに必要ないでしょう。
- SaKaKashi
- ベストアンサー率24% (755/3136)
どんな目的でデータの共用をしたいのですか? 別々のプロセス間なのか、Windowアプリで親は同じなのかとか。