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.

Namespaces descrevem diferentes ambientes gerenciados, como o ambiente de 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 pela DMTF (Força-Tarefa de Gerenciamento Distribuído).

Observação

Para garantir que todas as definições de classe WMI para objetos gerenciados sejam restauradas para o repositório WMI se o WMI tiver uma falha e reinicialização, 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 que deriva de __Namespace. A classe do 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. Todos os caracteres não são sensíveis a maiúsculas ou minúsculas.

Além de estabelecer o nome exclusivo de um namespace filho, o namespace WMI pai pode cuidar para que as instâncias estáticas de suas classes não sofram uma modificação acidental por outros provedores. Por exemplo, você pode achar conveniente aninhar um novo namespace sob 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 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 derivarem apenas de classes gerais do CIM 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 deriva 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:

Criando classes MOF (Managed Object Format)