ValueMap и квалификаторы значений
Сопоставление значений — это массив, связанный со свойством с квалификаторами Value и ValueMap .
Свойство выступает в качестве индекса в массиве, удерживая значение, представляющее одно из значений в массиве. С помощью MOF-кода можно использовать следующие типы сопоставлений значений:
Сопоставление массива с целым числом.
Вы можете определить массив с помощью квалификатора Value и связать массив непосредственно со свойством integer, как показано в следующем примере:
[Values {"OK", "Error", "Degraded", "Unknown"}, Read] sint32 Status;
В этом примере значение свойства Status является индексом массива строк, определенного значением Value. Свойство может принимать только значения, соответствующие порядковой позиции в массиве Value минус 1. Например, если задать для параметра Состояние значение "1", это соответствует значению "Ошибка". Свойство index может принимать только значения, соответствующие позициям в массиве Value . Например, если массив содержит 10 записей, свойство index может от 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, будет задано значение "Неизвестно".
Сопоставление массива с другим массивом, сопоставленным со строкой.
Если вы не хотите использовать целое число для индексирования массива, вместо этого можно использовать строку для хранения одного из возможных значений в массиве. Для этого необходимо определить массив Value и ValueMap , которые содержат строки, как показано в следующем примере:
[ValueMap {"OK", "Error", "Degraded", "Unknown"}, Values {"OK", "Error", "Degraded", "Unknown"}, Read] string Status;
При использовании строкового свойства фактически допустимыми значениями свойства являются записи в массиве ValueMap . Например, можно задать для параметра Состояние значение "ОК" или "Неизвестно".
Это до приложения, чтобы воспользоваться преимуществами сопоставления в удобном виде. Поставщик может применять допустимый диапазон значений.
Комментарии
При принятии решения о том, следует ли использовать квалификаторы ValueMap/Value или BitMap/BitValues , определите, может ли любое из указанных значений выполняться одновременно. Если может существовать несколько параллельных значений, необходимо использовать BitMap/BitValues. Если все значения являются взаимоисключающими, следует использовать квалификаторы ValueMap/Value .
Связанные темы