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
- Como definir propriedades ou métodos
- Como relacionar objetos uns aos outros
- Tópicos relacionados
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:
- Se uma instância for útil por si só, uma associação funcionará melhor. Por exemplo, Win32_Process e Win32_UserAccount. Para obter mais informações, confira Como declarar uma classe de associação.
- Se uma instância não existir fora do objeto pai, um objeto inserido funcionará melhor. Por exemplo, Win32_SecurityDescriptor e Win32_ACE. Para obter mais informações, confira Inserir objetos em uma classe.
Tópicos relacionados