用戶物件
用戶介面物件僅支援每個物件的一個句柄。 進程無法繼承或複製用戶物件的句柄。 一個工作階段中的進程無法參考另一個工作階段中的使用者句柄。
每個會話的理論限制為65,536個使用者句柄。 不過,每個會話可以開啟的使用者句柄數目上限通常較低,因為它會受到可用記憶體的影響。 使用者句柄也有預設的個別進程限制。 若要變更此限制,請設定下列登錄值:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\USERProcessHandleQuota
此值可以設定為介於 200 到 18,000 之間的數位。
用戶物件的句柄
用戶物件的句柄會公開給所有進程。 也就是說,只要進程具有對象的安全性存取權,任何進程都可以使用用戶物件句柄。
在下圖中,應用程式會建立窗口物件。 CreateWindow 函式會建立窗口物件,並傳回物件句柄。
建立視窗物件之後,應用程式可以使用視窗句柄來顯示或變更視窗。 句柄會維持有效狀態,直到視窗對象終結為止。
在下一個圖例中,應用程式會終結窗口物件。 DestroyWindow 函式會從記憶體中移除視窗物件,使視窗句柄失效。
管理用戶物件
下表列出用戶物件,以及每個物件的建立者和終結器函式。 建立者函式會建立對象和物件句柄,或只傳回現有的物件句柄。 終結器函式會從記憶體中移除物件,使物件句柄失效。