電子書籍の厳選無料作品が豊富!

お世話になります

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

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

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


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

A 回答 (1件)

>C++でAPIのインターフェースアドレスを共有メモリに配置して、


>他のアプリケーションから使用する事は可能でしょうか?

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

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

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

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

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

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

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

出来ません。

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

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

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

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!