共有メモリとフック – プログラミング – Home

通知
すべてクリア

[解決済] 共有メモリとフック


ドルドル
 ドルドル
(@ドルドル)
ゲスト
結合: 19年前
投稿: 96
Topic starter  

 いつもお世話になります。VC++6.0 MFCで開発をしております。キーボードフック
(グローバルフック)を作成しようといろいろ調べていく上で共有メモリなどの言葉が
でてきました。
 そこで、質問があります。
 i) フックに問わず この共有メモリを利用する利点とは何なのでしょうか?
 ii) キーボードフックを作成するにあたり 共有メモリは利用しないといけないので
しょうか??それとも利用しなくてもできるのでしょうか??
 ご教授お願いいたします


引用未解決
トピックタグ
YuO
 YuO
(@YuO)
ゲスト
結合: 22年前
投稿: 320
 

i) そのまんま,メモリを共有できることが利点です。
正しく排他や同期を行うことができれば,簡易的なプロセス間通信が可能になります。

ii) 利用する必要はありません。
ただし,フックDLLは仕込んだ側と異なるプロセス空間で動くため,
仕込んだ側とデータを共有したい場合には,共有メモリが一番簡単な解になります。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

ii)についてはYuOさんが書かれている以上には思いつかないので
i)について

一つのプロセスで完結するようなシステムであれば、
特に恩恵は無いと思います。
プロセスが違うとメモリ空間が別管理になるので
プロセス間で直接メモリのアドレスでデータをやり取りが出来ません。
通信で直接送る手もありますが、大きなデータの場合に両方の
プロセスにそれぞれデータを抱えることになるのでメモリの無駄になります。
そこで共有した方がよいデータを共有メモリ上に置くようにして
変更があったということだけを相手に通知するようにすれば、
通信量を少なく出来ますし、メモリも無駄遣いしないで済みます。
但し、共有メモリの場合は複数のプロセスからアクセスされますので
排他制御をきちんと行う必要があります。
また、マルチスレッドで処理するような場合でも
排他機能を持ったデータ管理クラスを作成して
グローバルにそのクラスをインスタンスを作成し、
共有メモリとして使うようなことをしたことがあります。
スレッド間の通知には同期オブジェクトを使い、
データのやり取りそのものは上記のクラスを通して
行うようにしていました。
ご参考まで。


返信引用
ドルドル
 ドルドル
(@ドルドル)
ゲスト
結合: 19年前
投稿: 96
Topic starter  

 YuOさん。PATIOさん。ありがとうございます。少し共有メモリについて勉強して
いきたいと思います。ご丁寧に解説ありがとうございました。勉強していく過程で また
伺うこともあるかと思いますが そのときはぜひまたよろしくお願いします。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました