こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VisualC++2008 APIと共有メモリ・・・

お世話になります

C++でAPIのインターフェースアドレスを共有メモリに配置して、
他のアプリケーションから使用する事は可能でしょうか?

イメージとして
CoCreateInstance( memA ); // memAは共有メモリに配置したい
他のexeより、memAを使用する

これができるとして、ネットワークを介してでも問題ないでしょうか?


まだまだ、勉強中なのですが御指導頂けたら幸いです
よろしくお願いします

投稿日時 - 2009-03-02 19:53:34

QNo.4762735

すぐに回答ほしいです

質問者が選んだベストアンサー

>C++でAPIのインターフェースアドレスを共有メモリに配置して、
>他のアプリケーションから使用する事は可能でしょうか?

http://hp.vector.co.jp/authors/VA022047/linux/shm.html
の「0.はじめに」を読んで下さい。

>イメージとして
>CoCreateInstance( memA ); // memAは共有メモリに配置したい
>他のexeより、memAを使用する

「同じ端末上の同じOS上で動いているアプリケーションであれば」、メモリを共有出来ます。

具体的には以下のページのようになります。
http://athomejp.com/goldfish/api/sharedmemory.asp

これは「メモリを、CreateFileMapping()で、あたかもファイルのようにして扱い、アクセスの為のハンドルを共有」する事により、メモリを複数のプロセスで共有すると言う手法です。

「アクセス用ハンドル」はMapViewOfFile()により「実際のメモリ」に変換する事が出来ます。

>これができるとして、ネットワークを介してでも問題ないでしょうか?

出来ません。

CreateFileMapping()で作られた共有メモリは「同じ端末上の同じOS上で動いているアプリケーション同士」で共有されます。

「他の端末で共有する」には「ファイル共有のように、ネットワークを通して、実データを送受信」する必要があります。

もし、あるアプリケーションが「他のパソコン上にあった」として、それをクリックして起動しても「アプリ本体がネットワークを通って読み込まれ、このパソコンで起動されるだけ」です。

「アプリが置いてあったパソコン」では、何も起動されません。「共有メモリの対象アプリは、同一パソコン内のアプリ同士のみ」です。

投稿日時 - 2009-03-03 14:27:28

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問