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