Partilhar via


Criando hierarquias dentro do WMI

o namespace WMI é um objeto de programação que define o escopo de um conjunto de classes e instâncias. As classes de provedor WMI devem ser definidas dentro de um namespace.

Os namespaces descrevem diferentes ambientes gerenciados, como o ambiente SMS. Como as classes e instâncias de um esquema definem os componentes de um ambiente gerenciado, cada novo esquema requer um novo namespace. Por exemplo, o namespace root\cimv2 contém as classes e instâncias definidas no esquema Win32, bem como as classes pai Common Information Model (CIM) das quais o esquema Win32 herda. As classes CIM são definidas pela Distributed Management Task Force (DMTF).

Observação

Para garantir que todas as definições de classe WMI para objetos geridos sejam restauradas no repositório WMI se o WMI tiver uma falha e for reiniciado, use a instrução de pré-processador #pragma autorecover no seu arquivo Managed Object Format (MOF).

 

WMI define um namespace como uma instância da classe de sistema __Namespace ou qualquer classe que derive de __Namespace. A classe de sistema __Namespace tem uma única propriedade chamada Name, que deve ser exclusiva dentro do escopo do namespace pai. A propriedade Name também deve conter uma cadeia de caracteres que começa com uma letra. Todos os outros caracteres na cadeia de caracteres podem ser letras, dígitos ou sublinhados. Todos os caracteres não distinguem maiúsculas de minúsculas.

Além de estabelecer um nome exclusivo para um namespace filho, o namespace pai do WMI pode proteger as instâncias estáticas das suas classes contra modificações acidentais por outros fornecedores. Por exemplo, pode achar conveniente aninhar um novo namespace dentro de um namespace existente de outro provedor. No entanto, o provedor original pode tentar atualizar todas as instâncias de classe para corresponder a um novo esquema. Ao fazer isso, o provedor original pode excluir todos os subfilhos em um namespace. Embora isso possa ser uma ação apropriada para o namespace de destino, pode afetar instâncias de classe não relacionadas em um namespace filho (ou seja, suas próprias classes de provedor).

Portanto, geralmente é recomendável que você crie e registre seu namespace como separado dos namespaces que você não controla diretamente. Isto é especialmente verdadeiro se as suas aulas derivarem apenas de aulas gerais de CIM ou outras classes da sua empresa. Seu namespace pode estar sob o namespace Root, como o seguinte:

Root/myCompany/myProduct

Por outro lado, se sua nova classe derivar da classe de outro provedor, talvez seja necessário armazenar sua classe em um subnamespace desse provedor. Observe que isso expõe sua nova classe à exclusão acidental pelo provedor original.

O WMI fornece várias maneiras diferentes de criar um namespace:

Projetando classes de formato de objeto gerenciado (MOF)