Criar 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 CIM (Common Information Model) pai das quais o esquema Win32 herda. As classes CIM são definidas pelo DMTF (Distributed Management Task Force).

Observação

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

 

O WMI define um namespace como uma instância da classe do sistema __Namespace ou qualquer classe derivada 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 comece com uma letra. Todos os outros caracteres na cadeia de caracteres podem ser letras, dígitos ou sublinhados. Nenhum caractere diferencia maiúsculas de minúsculas.

Além de determinar o nome exclusivo de um namespace filho, o namespace pai do WMI pode proteger as instâncias estáticas de suas classes contra modificação acidental por outros provedores. Por exemplo, você pode achar conveniente aninhar um novo namespace em um namespace existente para 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 sub-filhos em um namespace. Embora essa possa ser uma ação apropriada para o namespace de destino, ela 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. Isso é especialmente verdadeiro se suas classes derivam apenas de classes CIM gerais ou de outras classes da sua empresa. Seu namespace pode estar no namespace Raiz, como o seguinte:

Root/myCompany/myProduct

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

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

Projetar classes do MOF (Managed Object Format)