dポイントプレゼントキャンペーン実施中!

C言語でWINDOWSのプログラムを作成したさい、WinMainの引数としてインスタンスハンドルが渡されます。
XPで作成したアプリケイションを複数同時に立ち上げると、インスタンスハンドルの値はすべて同じとなります。仮想メモリが導入される前のOSでは、異なる値になるようです。
仮想メモリを使う現在、インスタンスハンドルは何の役に立つのでしょうか。旧来からの書式を変えないためだけに存在するのでしょうか。

A 回答 (1件)

16ビットWindows環境では、全てのプロセスが同じメモリ空間で


動作したため、各プロセスは互いに重なり合わないよう別のアドレスに
ロードされ、プロセスごとにインスタンスハンドルは異なっていました

32ビットWindows環境でのインスタンスハンドルはプロセス内での
モジュールを識別するためのもので、異なるプロセス間での
やり取りに使われる物ではないため、同じプロセス内で重複しなければ
問題ないようです。

プロセス内でみれば一意ですがOS全体として見れば、
インスタンスハンドルの値は重複しても構わない為、
Win32環境ではプロセスを一意に識別することができません。

Win32環境でプロセスを特定する場合はプロセスIDやプロセスハンドル
を使うことが殆どですし:-p
    • good
    • 0
この回答へのお礼

お礼遅くなり申し訳ございません。
大変よくわかりました。

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

お礼日時:2007/12/17 20:23

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