私は、WinAPIと基礎となるWindowsカーネルをよりよく理解しようとしています。これまでのところ、HWND
(ウィンドウ)ハンドルをプロセス間で共有することができます。どのWin32ユーザーモードハンドルをプロセス間で共有できますか?
しかし、他のハンドルについては、プロセス間で共有することはできますか?
HMODULE
,HINSTANCE
,ATOM
?
としてだけでなく、窓や描画コンポーネント:
HMENU
、HDC
、HICON
、HCURSOR
、HBRUSH
、など?
最後に、上記のすべてを共有できない場合は、ユーザーモードのハンドルがありますか?
EDIT:明確化。 を共有することによって、私はハンドルの数値を1つのプロセスから取り出し、別のプロセスで使用することを意味しました。
のWindows 95/98/MEは異なる場合があります、私はもう詳細は覚えていません。カーネルの一部は16ビットで、セキュリティはないので、ゲームをプレイすることができます。 kernel32、user32、gdi32などのHMODLUEは、特別な高いアドレスでロードされるため、すべて共有できます。これは、これらのシステム上のベースdllではないため、ntdllには当てはまらないかもしれません。 – Anders
情報ありがとうございます。 2つの迅速なフォローアップ。 1)「グローバル」形式の「ATOM」ハンドルを使用するAPIは何ですか? 2)共有すると、あるプロセスのハンドルの数値をとり、別のプロセスのハンドルをHWNDと同じように使うことを意味していました。このような場合、 'HMENU'、' HICON'、 'HCURSOR'は本当に共有できますか? PS。申し訳ありません、upvoteできません。十分なジュースはありません。 – MikeF
@MikeF、[USERオブジェクトハンドル](https://msdn.microsoft.com/en-us/library/ms725486)はセッション内で公開され、関連するデスクトップを開くための読み書きアクセスがある場合に使用できます。通常、グローバルな[アトムテーブル](https://msdn.microsoft.com/en-us/library/ms649053)は、セッション内の唯一のインタラクティブなWindowStation「WinSta0」など、WindowStationにあります。 [JOBOBJECT_BASIC_UI_RESTRICTIONS'](https://msdn.microsoft.com/en-us/library/ms684152)がある場合、プロセスは同じジョブ内のプロセスのUSERオブジェクトとアトムだけに制限されることに注意してください。 – eryksun