次の方法で共有


ユーザー オブジェクト

ユーザー インターフェイス オブジェクトは、オブジェクトごとに 1 つのハンドルのみをサポートします。 プロセスは、ユーザー オブジェクトにハンドルを継承または複製できません。 あるセッションのプロセスは、別のセッションのユーザー ハンドルを参照できません。

セッションあたり 65,536 個のユーザー ハンドルの理論上の制限があります。 ただし、使用可能なメモリの影響を受けるので、セッションごとに開くことができるユーザー ハンドルの最大数は通常は少なくなっています。 また、ユーザー ハンドルの既定のプロセスごとの制限もあります。 この制限を変更するには、次のレジストリ値を設定します。

Hkey_local_machine\ソフトウェア\マイクロソフト\\ Windows NT CurrentVersion\Windows\USERProcessHandleQuota

この値は、200 から 18,000 までの数値に設定できます。

ユーザー オブジェクトへのハンドル

ユーザー オブジェクトへのハンドルは、すべてのプロセスに公開されます。 つまり、プロセスがオブジェクトに対するセキュリティ アクセス権を持っている場合、どのプロセスでもユーザー オブジェクト ハンドルを使用できます。

次の図では、アプリケーションによってウィンドウ オブジェクトが作成されます。 CreateWindow 関数は、ウィンドウ オブジェクトを作成し、オブジェクト ハンドルを返します。

ウィンドウ オブジェクトを作成するアプリケーション

ウィンドウ オブジェクトが作成されると、アプリケーションはウィンドウ ハンドルを使用してウィンドウを表示または変更できます。 ハンドルは、ウィンドウ オブジェクトが破棄されるまで有効なままです。

次の図では、アプリケーションによってウィンドウ オブジェクトが破棄されます。 DestroyWindow 関数は、ウィンドウ オブジェクトをメモリから削除し、ウィンドウ ハンドルを無効にします。

ウィンドウ オブジェクトの破棄

ユーザー オブジェクトの管理

次の表に、ユーザー オブジェクトと、各オブジェクトの作成者関数と破壊機能を示します。 Creator 関数は、オブジェクトとオブジェクト ハンドルを作成するか、単に既存のオブジェクト ハンドルを返します。 デストロイヤー関数はオブジェクトをメモリから削除し、オブジェクト ハンドルを無効にします。

ユーザー オブジェクト Creator 関数 デストロイヤー関数
アクセラレータ テーブル CreateAcceleratorTable DestroyAcceleratorTable
キャレット CreateCaret DestroyCaret
カーソル CreateCursorLoadCursorLoadImage DestroyCursor
DDE 会話 DdeConnectDdeConnectList DdeDisconnectDdeDisconnectList
フック SetWindowsHookEx UnhookWindowsHookEx
アイコン CreateIconIndirectLoadIconLoadImage DestroyIcon
メニュー CreateMenuCreatePopupMenuLoadMenuLoadMenuIndirect DestroyMenu
ウィンドウ CreateWindowCreateWindowExCreateDialogParamCreateDialogIndirectParamCreateMDIWindow DestroyWindow
ウィンドウの位置 BeginDeferWindowPos EndDeferWindowPos