• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:異なるプロセス間でのイベントハンドルの共有)

異なるプロセス間でのイベントハンドル共有

このQ&Aのポイント
  • WIN32 APIのDuplicateHandleを用いて、異なるプロセス間でのイベントハンドルを共有するためのプログラムを実行すると、想定した動作ができずにエラーが発生します。
  • プロセスAで本物のプロセスハンドルを取得し、プロセスAでイベントを作成します。
  • プロセスBでプロセスAが取得した本物のハンドルとイベントハンドルを用いてイベントハンドルを複製すると、エラーが発生します。

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

  • ベストアンサー
  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.2

作成元のプロセスおよび、作成したハンドルに対して 適切なアクセス権を与えていますか? 特にPROCESS_DUP_HANDLEは、NT/2000以降では必須です。 また、関数に指定するハンドルが間違っているような気がします。 第1引数は”プロセスのハンドル”であり、第4引数は”複製する対象のハンドル”です。 提示されたソースではどちらが正しいのかわかりませんが、 もう一度、MSDNを確認し関数仕様を確認された方が良いように思います。 >&RealProcessHandle,     // 本物のハンドル >RealProcessHandle,     // プロセスAが(1)で取得した本物のハンドル なお、異なるプロセス間では、名前付き以外で共有する場合、 共有メモリや名前付きパイプなどを使用しなければならないパターンもあり 端から名前付きイベントを作成した方が安全な場合もあるので、 本当に名前付きイベントではダメなのか、再考するほうが良いかも知れません。

参考URL:
http://msdn.microsoft.com/en-us/library/ms724251(VS.85).aspx
_hitoshi_
質問者

お礼

別プロセスのプロセスハンドルを得るのに、 プロセスIDからOpenProcess関数を使い、 それからDuplicateHandle関数を実行することでうまくいきました。 ありがとうございました。

_hitoshi_
質問者

補足

別プロセスのプロセスハンドルを得るのに、 プロセスIDからOpenProcess関数を使い、 それからDuplicateHandle関数を実行することでうまくいきました。 ありがとうございました。

その他の回答 (1)

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

ハンドルはポインターでアドレスを示すものなので、プロセスAのアドレスはプロセスBでは不当なアドレスになります。

_hitoshi_
質問者

お礼

ありがとうございました。

関連するQ&A