设计托管对象格式 (MOF) 类
WMI 提供程序由托管对象格式 (MOF) 文件和 DLL 文件组成。 MOF 文件定义了提供程序实现要为其提供数据的类。
MOF 类定义由 mofcomp 实用工具编译,并存储在 WMI 存储库(也称为通用信息模型 (CIM) 存储库)中。 创建类的一种不太常见方式是通过适用于 WMI 的 COM API 的方法。
注意
若要确保在 WMI 发生故障并重启时将托管对象的所有 WMI 类定义还原到 WMI 存储库,请使用 MOF 文件中的 #pragma autorecover 预处理器指令。
本主题包括以下部分:
定义要管理的对象
确定要管理的企业部分后,定义要管理的对象。 该定义必须包括必需的数据,并允许你准确地实现相关的业务规则。 可以在粒度级别定义对象,但最好在定义中包含的详细级别与提供足够详细信息的需求之间做出取舍。 在流程的早期阶段走捷径可以节省时间,但可能导致将来的工作量更多。
分布式管理任务组 (DMTF) 网站上的 CIM 教程提供了有关设计过程的有用信息。 有关详细信息,请访问 www.dmtf.org。
在开发和实现架构设计时考虑以下因素:
限定符
限定符提供有关如何描述类、对象、属性、方法和参数的信息;它们应用于类和属性定义。 在 MOF 代码中,限定符括在方括号中,可能包括 [key] 或 [association]。 有关详细信息,请参阅添加限定符和 WMI 限定符。
命名空间
命名空间是用于对类和对象进行分组并控制范围和可见性的逻辑单元。 通常,命名空间包含一组表示特定环境中托管对象的类和对象。 有关详细信息,请参阅在 WMI 中创建层次结构。
对象
建模对象可能是架构的物理或逻辑元素。 例如,可以对物理磁盘驱动器(例如硬盘驱动器)或逻辑磁盘(可能是物理磁盘上的分区)进行建模。 使用类来模拟物理磁盘驱动器,然后扩展该类来模拟逻辑磁盘的设计比尝试为每种类型的磁盘单独创建一个类的设计更具可伸缩性。
数据
数据可以是动态的,也可以是静态的。 如果数据是动态的,则必须为其创建类提供程序。
要使用户能够修改数据,你必须确定是希望属性直接可写,还是仅可使用用户调用的方法进行修改。
定义属性或方法
通常,WMI 类属性类似于 C++ 类中的属性。 如果代码为数据片段实现的操作只是获取值或设置值,则应将数据定义为 WMI 类的属性。
WMI 方法通常执行更改托管对象状态的操作。 例如,如果操作是启用或禁用硬件对象的操作,则使用方法可能比创建读/写属性更好。 你还可以创建一个显示硬件状态的属性。
创建类或实例时,可以包含注释。 使用这种技术记录类或解释编程技术。 有关详细信息,请参阅创建注释。 此外,还可以添加数据来限定数据对象的用途。 有关详细信息,请参阅添加限定符。
将对象相互关联
可通过两种方式将对象相互关联:创建单独的对象,然后创建一个关联对象将其关联;或者在一个对象中嵌入另一个对象。 CIM 不支持嵌入对象,因此若要符合 CIM 规范,必须使用第一种方法。 但是,WMI 支持嵌入对象,因此可以使用任一方法表示对象之间的关系。 可以在 Win32 类中找到嵌入对象的示例。 例如,Win32_SecurityDescriptor 具有嵌入对象 Win32_ACE,而后者具有另一个嵌入对象 Win32_Trustee。
在确定如何表示对象之间的关系时,请考虑以下因素:
- 如果实例本身有用,则关联效果最佳。 例如,Win32_Process 和 Win32_UserAccount。 有关详细信息,请参阅声明关联类。
- 如果实例不在父对象外部,则嵌入对象效果最佳。 例如,Win32_SecurityDescriptor 和 Win32_ACE。 有关详细信息,请参阅在类中嵌入对象。
相关主题