ValueMap 和值限定符

值映射是链接到具有 ValueMap 限定符的属性的数组。

该属性充当数组中的索引,保留一个表示数组中的值之一的值。 使用 MOF 代码,可以具有以下类型的值映射:

  • 数组映射到整数。

    可以使用 限定符定义数组,并将数组直接链接到整数属性,如以下示例所示:

    [Values {"OK", "Error", "Degraded", "Unknown"}, Read]
    sint32 Status;
    

    在此示例中,Status 属性值是 Value定义的字符串数组中的索引。 该属性只能接受与 数组减 1 中的序号位置对应的值。 例如,将 状态 设置为“1”会映射到“错误”值。 索引属性只能获取对应于 数组中位置的值。 例如,如果数组有 10 个条目,则索引属性可以故事 0 到 9,而不是 30 或 177。

  • 数组映射到另一个映射到整数的数组。

    如果要创建不使用序号计数系统的索引,请使用 ValueMap 限定符。 ValueMap 限定符设置另一个包含任意索引编号系统的数组,如以下示例所示:

    [ValueMap {"1", "3", "99", "0"}, 
     Values {"OK", "Error", "Degraded", "Unknown"}, Read]
    sint32 Status;
    

    尽管必须将 ValueMap 的值放在引号中,但 WMI 会考虑这些值整数。 因此,在此示例中,可以将 Status 属性设置为 ValueMap 集中的整数:1、3、99 或 0。 WMI 将 ValueMap 字符串数组中序号位置中的每个整数映射到 Value 数组中的相应位置。 例如,将状态 设置为 0 映射到“未知”。

  • 数组映射到另一个映射到字符串的数组。

    如果不想使用整数为数组编制索引,则可以改用字符串来保存数组中可能的值之一。 为此,必须同时定义一个 ValueMap 数组,其中包含字符串,如以下示例所示:

    [ValueMap {"OK", "Error", "Degraded", "Unknown"}, 
     Values {"OK", "Error", "Degraded", "Unknown"}, Read]
    string Status;
    

    使用字符串属性时,该属性的实际允许值是 ValueMap 数组中的条目。 例如,可以将 状态 设置为“确定”或“未知”。

应用程序应以有用的方式利用映射。 由提供程序来强制实施法定值范围。

言论

在决定是否使用 ValueMap/Value 还是 BitMap/BitValues 限定符时,请确定指示的任何值是否可以同时发生。 如果存在多个并发值,则必须使用 BitMap/BitValues。 如果所有值都是互斥的,则应使用 ValueMap/Value 限定符。

BitMap 和 BitValues