应用限定符

与托管对象格式 (MOF) 中的许多其他技术一样,将限定符应用于代码是一个相对简单的过程。

唯一真正的挑战是 WMI 强制执行的命名约定中的以下限制:

  • 限定符可以描述类、实例、属性、方法或方法参数。

  • 限定符名称不能包含前导下划线或尾随下划线。

  • 限定符不能以数字开头。

  • 限定符名称不能包含特殊字符,如 & * @ ! ~ \ /.

  • 所有限定符名称不区分大小写。

  • 不能重新定义标准 WMI 限定符或 DMTF CIM 规范中描述的任何限定符。

  • 未显式声明限定符类型。

    如果未声明限定符类型,则 WMI 假定类型为布尔值,值为 TRUE。 否则,WMI 会根据声明的限定符值来设定限定符的类型。

  • 创建自己的限定符时,应将架构名称作为限定符名称的前缀。

    此规则的目的是避免与新限定符混淆。

  • 可以创建限定符的同质数组。

    下面的代码示例演示如何使用值周围的大括号指定限定符数组。

    [StringArray{"hello", "there"}, SingleElementArray{3}]
    
  • WMI 不支持使用引用中未列出的自动化类型,例如 VT_NULL。 有关详细信息,请参阅 MOF 数据类型

以下过程可帮助你使用 C++ 向属性添加限定符。

使用 C++ 应用限定符

以下过程可帮助你在 MOF 文件中应用限定符。

使用 MOF 描述带有限定符的关键字或标识符

  • 将限定符放在限定符描述的关键字或标识符之前并用括号括起来。

    以下代码示例演示如何使用限定符。

    [qualifiers...]
    class StdDisk
    {
      [qualifiers...]  uint32 dwNumCylinders;
      [qualifiers...]  uint32 dwNumHeads;
      [qualifiers...]  sint32 Method1();
      sint32 Method2([qualifiers...] Parameter1);
    };
    

    以下示例描述如何正确放置限定符。

    [Abstract]
    class MyClass
    {
        [Amendment, InstanceOf]  uint32 dwNumber;
        sint32 MyMethod ([in] sint32 Param);
    };