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 .

BitMap и BitValues