Пространства имен объектов

Пространство имен объектов защищает именованные объекты от несанкционированного доступа. Создание частного пространства имен позволяет приложениям и службам создавать более безопасную среду.

Процесс может создать частное пространство имен с помощью функции CreatePrivateNamespace . Для этой функции требуется указать границу , определяющую способ изоляции объектов в пространстве имен. Для успешного выполнения операции создания вызывающий объект должен находиться в пределах указанной границы. Чтобы указать границу, используйте функции CreateBoundaryDescriptor и AddSIDToBoundaryDescriptor .

Параметр lpAliasPrefixcreatePrivateNamespace служит в качестве имени пространства имен. Каждое пространство имен уникально идентифицируется по его имени и границам. Система поддерживает несколько частных пространств имен с одинаковыми именами, если они указывают разные границы.

Предположим, что процесс запрашивает создание пространства имен NS1, определяющего границу, содержащую два элемента: идентификатор безопасности администратора и номер текущего сеанса. Пространство имен создается, если процесс выполняется под учетной записью администратора в указанном сеансе. Другой процесс может получить доступ к этому пространству имен с помощью функции OpenPrivateNamespace . И указанное имя, и граница должны совпадать, если этот процесс открывает пространство имен, созданное первым процессом. Обратите внимание, что процесс может открыть существующее пространство имен, даже если оно не находится в пределах границы, если только создатель не ограничил доступ к пространству имен с помощью параметра lpPrivateNamespaceAttributes .

Объекты, созданные в этом пространстве имен, имеют имена, которые имеют префикс\objectname формы. Префикс — это имя пространства имен, заданное параметром lpAliasPrefixобъекта CreatePrivateNamespace. Например, чтобы создать объект события с именем MyEvent в пространстве имен NS1, вызовите функцию CreateEvent с параметром lpName , равным NS1\MyEvent.

Процесс, создавший пространство имен, может использовать функцию ClosePrivateNamespace , чтобы закрыть дескриптор пространства имен. Дескриптор также закрывается при завершении процесса, создавшего пространство имен. После закрытия дескриптора пространства имен последующие вызовы OpenPrivateNamespace завершаются сбоем, но все операции с объектами в пространстве имен завершаются успешно.

Пространства имен объектов ядра