Como criar classes MOF (Managed Object Format)

Um provedor WMI consiste em um arquivo MOF (Managed Object Format) e um arquivo DLL. O arquivo MOF define as classes para as quais a implementação do provedor fornece dados.

As definições de classe MOF são compiladas pelo utilitário mofcomp e armazenadas no repositório do WMI, também conhecido como repositório CIM (Common Information Model). Uma maneira menos comum de criar classes é por meio dos métodos da API COM para WMI.

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 o #pragma autorecover no arquivo MOF.

 

As seguintes seções serão abordadas neste tópico:

Como definir os objetos a serem gerenciados

Depois de identificar a parte da sua empresa a ser gerenciada, defina os objetos a serem gerenciados. A definição deve incluir os dados necessários e permitir que você implemente as regras de negócios relevantes com precisão. Você pode definir objetos em um nível granular, mas é melhor decidir entre o nível de detalhes contido na definição e a necessidade de fornecer detalhes suficientes para ser útil. Os atalhos no início do processo podem economizar tempo, mas podem gerar mais trabalho no futuro.

O Tutorial do CIM no site do DMTF (Distributed Management Task Force) contém excelentes informações sobre o processo de design. Para obter mais informações, confira www.dmtf.org.

Considere os seguintes fatores ao desenvolver e implementar um design de esquema:

  • Qualificadores

    Os qualificadores fornecem informações sobre como descrever classes, objetos, propriedades, métodos e parâmetros; e eles são aplicados a definições de classe e propriedade. No código MOF, os qualificadores são colocados entre colchetes e podem incluir [key] ou [association]. Para obter mais informações, confira Como adicionar um qualificador e Qualificadores do WMI.

  • Namespace

    Um namespace é uma unidade lógica para agrupar classes e objetos e controlar o escopo e a visibilidade. Normalmente, um namespace contém um conjunto de classes e objetos que representam objetos gerenciados em um ambiente específico. Para obter mais informações, confira Como criar hierarquias dentro do WMI.

  • Objeto

    Um objeto modelado pode ser um elemento físico ou lógico do esquema. Por exemplo, você pode modelar uma unidade de disco física, como uma unidade de disco rígido ou um disco lógico que pode ser uma partição em um disco físico. Um design que usa uma classe para modelar uma unidade de disco física e, em seguida, estende essa classe para modelar um disco lógico é mais extensível do que um que tenta criar uma classe separada para cada tipo de disco.

  • Dados

    Os dados podem ser dinâmicos ou estáticos. Se os dados forem dinâmicos, você deverá criar um provedor de classe para ele.

    Para permitir que o usuário modifique dados, você deve determinar se deseja ou não que uma propriedade seja gravável ou modificável diretamente, usando um método que o usuário chama.

Como definir propriedades ou métodos

Geralmente, uma propriedade de classe do WMI é semelhante a uma propriedade em uma classe C++. Se a única ação que seu código implementa para os dados é obter o valor ou definir o valor, os dados deverão ser definidos como uma propriedade da classe do WMI.

Um método do WMI geralmente executa uma ação que altera o estado de um objeto gerenciado. Por exemplo, se a ação for habilitar ou desabilitar a operação de um objeto de hardware, um método provavelmente será preferencial em relação à criação de uma propriedade de leitura/gravação. Você pode decidir também criar uma propriedade que exibe o estado do hardware.

Ao criar uma classe ou uma instância, você pode incluir comentários. Use essa técnica para documentar sua classe ou explicar suas técnicas de programação. Para obter mais informações, confira Criar um comentário. Além disso, você pode adicionar dados para qualificar a finalidade de um objeto de dados. Para obter mais informações, confira Como adicionar um qualificador.

Como relacionar objetos uns aos outros

Há duas maneiras de relacionar objetos entre si: criando objetos separados e um objeto de associação que os relaciona ou inserindo um objeto no outro. O CIM não dá suporte a objetos inseridos. Portanto, para estar em conformidade com o CIM, você deve usar o primeiro método. No entanto, o WMI dá suporte a objetos inseridos. Portanto, use qualquer método para representar uma relação entre objetos. Você pode encontrar exemplos de objetos inseridos nas Classes Win32. Por exemplo, Win32_SecurityDescriptor tem o objeto inserido Win32_ACE, que tem outro objeto inserido, Win32_Trustee.

Considere o seguinte ao decidir como representar relações entre objetos:

Como desenvolver um provedor do WMI

Como fornecer dados ao WMI

Tipos de dados MOF