Diseño de clases de Managed Object Format (MOF)
Un proveedor de WMI consta de un archivo Managed Object Format (MOF) y un archivo DLL. El archivo MOF define las clases para las que la implementación del proveedor proporciona datos.
Las definiciones de clase MOF se compilan mediante la utilidad mofcomp y se almacenan en el repositorio WMI, también conocido como repositorio Modelo de información común (CIM). Una forma menos común de crear clases es mediante los métodos de la API COM para WMI.
Nota
Para asegurarse de que todas las definiciones de clase WMI para objetos administrados se restauran en el repositorio WMI, si WMI tiene un error y se reinicia, use la instrucción de preprocesador de pragma autorecover en el archivo MOF.
En este tema se describen las secciones siguientes:
- Definición de los objetos que se van a administrar
- Definición de propiedades o métodos
- Relación de objetos entre sí
- Temas relacionados
Después de identificar la parte de la empresa que se va a administrar, defina los objetos que se van a administrar. La definición debe incluir los datos necesarios y permitirle implementar las reglas de negocios pertinentes con precisión. Puede definir objetos en un nivel granular, pero es mejor decidir entre el nivel de detalle que contiene la definición y la necesidad de proporcionar suficiente detalle para ser útil. Los accesos directos al principio del proceso pueden ahorrar tiempo, pero pueden provocar más trabajo en el futuro.
El Tutorial de CIM del sitio web de Distributed Management Task Force (DMTF) contiene información excelente sobre el proceso de diseño. Para obtener más información, vea www.dmtf.org.
Tenga en cuenta estos factores al desarrollar e implementar un diseño de esquema:
Calificadores
Los calificadores proporcionan información sobre cómo describir clases, objetos, propiedades, métodos y parámetros; y se aplican a las definiciones de clase y propiedad. En código MOF, los calificadores se incluyen entre corchetes y pueden incluir [key] o [association]. Para obtener más información, vea Incorporación de un calificador y Calificadores WMI.
Espacio de nombres
Un espacio de nombres es una unidad lógica para agrupar clases y objetos, y controlar el ámbito y la visibilidad. Normalmente, un espacio de nombres contiene un conjunto de clases y objetos que representan objetos administrados en un entorno específico. Para obtener más información, vea Creación de jerarquías en WMI.
Object
Un objeto modelado puede ser un elemento físico o lógico del esquema. Por ejemplo, puede modelar una unidad de disco físico (como una unidad de disco duro) o un disco lógico que pueda ser una partición en un disco físico. Un diseño que usa una clase para modelar una unidad de disco física y, después, extiende esa clase para modelar un disco lógico es más extensible que una que intenta crear una clase independiente para cada tipo de disco.
data
Los datos pueden ser dinámicos o estáticos. Si los datos son dinámicos, debe crear un proveedor de clases para ellos.
Para permitir que el usuario modifique los datos, debe determinar si quiere que una propiedad se pueda escribir directamente o modificar solo mediante un método al que el usuario llama.
Por lo general, una propiedad de clase WMI es similar a una propiedad en una clase C++. Si las únicas acciones que el código implementa para el fragmento de datos son para obtener o establecer el valor, los datos deben definirse como una propiedad de la clase WMI.
Normalmente, un método WMI realiza una acción que cambia el estado de un objeto administrado. Por ejemplo, si la acción es habilitar o deshabilitar la operación de un objeto de hardware, es probable que se prefiera un método a crear una propiedad de lectura y escritura. También puede decidir crear una propiedad que muestre el estado del hardware.
Al crear una clase o una instancia, puede incluir comentarios. Use esta técnica para documentar la clase o explicar las técnicas de programación. Para obtener más información, vea Creación de un comentario. Además, puede agregar datos para calificar el propósito de un objeto de datos. Para obtener más información, vea Incorporación de un calificador.
Hay dos maneras de relacionar objetos entre sí: mediante la creación de objetos independientes y un objeto de asociación que los relaciona, o la inserción de un objeto en el otro. CIM no admite objetos incrustados, por lo que para ser compatible con CIM debe usar el primer método. Pero WMI sí los admite, así que puede usar cualquiera de los métodos para representar una relación entre objetos. Puede encontrar ejemplos de objetos incrustados en clases Win32. Por ejemplo, Win32_SecurityDescriptor tiene el objeto incrustado Win32_ACE, que tiene otro objeto incrustado, Win32_Trustee.
Tenga esto en cuenta al decidir cómo representar relaciones entre objetos:
- Si una instancia es útil por sí misma, una asociación funciona mejor. Por ejemplo, Win32_Process y Win32_UserAccount. Para obtener más información, vea Declaración de una clase de asociación.
- Si una instancia no existe fuera del objeto primario, un objeto incrustado funciona mejor. Por ejemplo, Win32_SecurityDescriptor y Win32_ACE. Para obtener más información, vea Inserción de objetos en una clase.