添加 WMI 属性
WMI 类中的属性描述有关托管对象的数据。 例如,Handle、ProcessId 和 PageFaults 被定义为 Win32_Process 类的属性,并描述操作系统进程的各个方面。 有关详细信息,请参阅编写属性提供程序。
定义 MOF 中的属性
WMI 属性表示对象中的一个方面或状态。 可以创建属性,而不是创建只获取和设置值的方法。 例如,Win32_NetworkAdapter 的 NetEnabled 属性显示适配器的状态是“已启用”还是“已禁用”。 但是,Enable 和 Disable 方法实际上执行更改适配器状态的操作。
属性必须具有数据类型。 Win32_Process 属性 Handle 的数据类型为 string,PageFaults 的数据类型为 uint32。 如果属性只能有两种状态,属性的数据类型通常设置为 boolean。
属性也可能是数组。 例如,Win32_Trustee 的安全标识符 (SID) 属性是包含 SID 的字节数组 (uint8)。 属性可以包含嵌入对象,这些对象是对其他 WMI 类的一个或多个实例的引用。 例如,Win32_SecurityDescriptor 的自定义访问控制列表 (DACL) 和系统访问控制列表 (SACL) 属性是 Win32_ACE 对象的数组,这些对象描述具有访问权限的组和帐户。 Win32_SecurityDescriptor 中的 Group 属性包含对 Win32_Trustee 的单个实例的引用。 有关详细信息,请参阅在类中嵌入对象。
一个属性可能有多个限定符。 这些限定符可以是通用信息模型 (CIM) 或 WMI 限定符,也可以特定于某些类型的类,例如性能计数器类限定符。 限定符指定属性的某些方面,例如属性是否为只读,或者在没有特定权限的情况下是否无法更改属性。 例如,尝试写入 Win32_SecurityDescriptor DACL 属性的应用程序需要 SeSecurityPrivilege 和 SeRestorePrivilege 权限。 有关详细信息,请参阅添加限定符。
最后,属性必须具有名称。 可以向属性提供任何名称,只要不超出标准编程实践的范围即可。 但有两个主要例外。 首先,不能将任何 MOF 关键字(如“class”)用作属性名。 其次,不能将任何 WQL 关键字(如“group”)用作属性名。 有关 MOF 和 WQL 关键字的详细信息,请参阅 MOF 数据类型和 WQL (SQL for WMI)。
对于 C++ 和托管对象格式 (MOF) 代码,可以在声明类的同时声明类的属性。
定义属性
将属性数据类型、名称以及可选的默认值和限定符放在类描述的大括号中间。
class MyClass { [key] string strProp; sint32 dwProp1 = 21; uint32 dwProp2; };
上述示例中的 MyClass 类有三个属性:字符串、32 位有符号整数和 32 位无符号整数。 为每个属性分配一个不区分大小写的名称和一个 MOF 数据类型。
相关主题