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 限定符。
相关主题