Share via


物件命名空間

物件命名空間可保護具名物件免于未經授權的存取。 建立私人命名空間可讓應用程式和服務建置更安全的環境。

進程可以使用 CreatePrivateNamespace 函式來建立私人命名空間。 此函式會要求您指定 界限 ,以定義命名空間中物件的隔離方式。 呼叫端必須位於指定的界限內,才能讓建立作業成功。 若要指定界限,請使用 CreateBoundaryDescriptorAddSIDToBoundaryDescriptor 函式。

CreatePrivateNamespacelpAliasPrefix參數可作為命名空間的名稱。 每個命名空間都會以其名稱和界限唯一識別。 只要系統指定不同的界限,系統就支援多個具有相同名稱的私人命名空間。

假設進程要求建立命名空間 NS1,其定義包含兩個元素的界限:系統管理員 SID 和目前的會話編號。 如果進程是在指定會話中的系統管理員帳戶下執行,就會建立命名空間。 另一個進程可以使用 OpenPrivateNamespace 函式來存取此命名空間。 如果這個進程是要開啟第一個進程所建立的命名空間,則指定的名稱和界限都必須相符。 請注意,除非建立者使用 lpPrivateNamespaceAttributes 參數限制對命名空間的存取,否則進程仍可開啟現有的命名空間。

在此命名空間中建立的物件具有格式前置詞\物件名稱的名稱。 前置詞是由CreatePrivateNamespacelpAliasPrefix參數所指定的命名空間名稱。 例如,若要在 NS1 命名空間中建立名為 MyEvent 的事件物件,請呼叫 CreateEvent 函式,並將 lpName 參數設定為 NS1\MyEvent。

建立命名空間的程式可以使用 ClosePrivateNamespace 函式來關閉命名空間的控制碼。 建立命名空間的進程終止時,也會關閉控制碼。 關閉命名空間控制碼之後, 對 OpenPrivateNamespace 的後續呼叫會失敗,但命名空間中物件的所有作業都會成功。

核心物件命名空間