- ベストアンサー
VisualC++2008 APIと共有メモリ・・・
お世話になります C++でAPIのインターフェースアドレスを共有メモリに配置して、 他のアプリケーションから使用する事は可能でしょうか? イメージとして CoCreateInstance( memA ); // memAは共有メモリに配置したい 他のexeより、memAを使用する これができるとして、ネットワークを介してでも問題ないでしょうか? まだまだ、勉強中なのですが御指導頂けたら幸いです よろしくお願いします
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>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上で動いているアプリケーション同士」で共有されます。 「他の端末で共有する」には「ファイル共有のように、ネットワークを通して、実データを送受信」する必要があります。 もし、あるアプリケーションが「他のパソコン上にあった」として、それをクリックして起動しても「アプリ本体がネットワークを通って読み込まれ、このパソコンで起動されるだけ」です。 「アプリが置いてあったパソコン」では、何も起動されません。「共有メモリの対象アプリは、同一パソコン内のアプリ同士のみ」です。