添加 WMI 属性

WMI 类中的属性描述有关托管对象的数据。 例如,Handle、ProcessId 和 PageFaults 被定义为 Win32_Process 类的属性,并描述操作系统进程的各个方面。 有关详细信息,请参阅编写属性提供程序

定义 MOF 中的属性

WMI 属性表示对象中的一个方面或状态。 可以创建属性,而不是创建只获取和设置值的方法。 例如,Win32_NetworkAdapter 的 NetEnabled 属性显示适配器的状态是“已启用”还是“已禁用”。 但是,EnableDisable 方法实际上执行更改适配器状态的操作。

属性必须具有数据类型。 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 数据类型。

    Key 限定符将字符串属性定义为唯一标识类实例的键属性。 有关限定符的详细信息,请参阅添加限定符

创建类