Partilhar via


Namespaces de objeto

Um namespace de objeto protege objetos nomeados contra acesso não autorizado. A criação de um namespace privado permite que aplicativos e serviços criem um ambiente mais seguro.

Um processo pode criar um namespace privado usando a funçãoCreatePrivateNamespace. Essa função requer que você especifique um limite que define como os objetos no namespace devem ser isolados. O chamador deve estar dentro do limite especificado para que a operação create seja bem-sucedida. Para especificar um limite, use o CreateBoundaryDescriptor e funções AddSIDToBoundaryDescriptor.

O lpAliasPrefix parâmetro de CreatePrivateNamespace serve como o nome do namespace. Cada namespace é identificado exclusivamente por seu nome e limites. O sistema suporta vários namespaces privados com o mesmo nome, desde que eles especifiquem limites diferentes.

Suponha que um processo solicite a criação de um namespace, NS1, que define um limite contendo dois elementos: o SID do administrador e o número da sessão atual. O namespace é criado se o processo estiver sendo executado sob a conta de administrador na sessão especificada. Outro processo pode acessar esse namespace usando a função OpenPrivateNamespace. O nome especificado e o limite devem corresponder se esse processo quiser abrir o namespace criado pelo primeiro processo. Observe que um processo pode abrir um namespace existente mesmo que ele não esteja dentro do limite, a menos que o criador tenha restringido o acesso ao namespace usando o parâmetro lpPrivateNamespaceAttributes lpPrivateNamespaceAttributes.

Os objetos criados neste namespace têm nomes que são da forma prefixo\objectname. O prefixo é o nome do namespace especificado pelo lpAliasPrefix parâmetro de CreatePrivateNamespace. Por exemplo, para criar um objeto de evento chamado MyEvent no namespace NS1, chame a funçãoCreateEvent com o parâmetro lpName definido como NS1\MyEvent.

O processo que criou o namespace pode usar o função ClosePrivateNamespace para fechar o identificador para o namespace. O identificador também é fechado quando o processo que criou o namespace termina. Depois que o identificador de namespace é fechado, as chamadas subsequentes para OpenPrivateNamespace falhar, mas todas as operações em objetos no namespace são bem-sucedidas.

Namespaces de objeto do kernel