Qualificadores Valor e ValueMap

Um mapa de valor é uma matriz vinculada a uma propriedade com os qualificadores Valor e ValueMap.

A propriedade atua como um índice na matriz, mantendo um valor que representa um dos valores na matriz. Ao usar o código MOF, é possível ter os seguintes tipos de mapas de valor:

  • Mapeamento de matriz para um inteiro.

    É possível definir uma matriz com o qualificador Valor e vincular a matriz diretamente a uma propriedade de inteiro, conforme mostrado no exemplo a seguir:

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

    Neste exemplo, o valor da propriedade Status é um índice na matriz de cadeia de caracteres definida por Valor. A propriedade só pode assumir valores que correspondem às posições ordinais na matriz Valor menos 1. Por exemplo, definir Status como "1" é mapeado para o valor "Erro". A propriedade index pode usar apenas valores que correspondam a posições na matriz Valor. Por exemplo, se a matriz tiver 10 entradas, a propriedade de índice poderá ser de 0 a 9, não 30 ou 177.

  • Mapeamento de matriz para outro mapeamento de matriz para um inteiro.

    Caso queira criar um índice que não use um sistema ordinal de contagem, use o qualificador ValueMap. O qualificador ValueMap configura outra matriz que contém um sistema arbitrário de numeração de índice, conforme mostrado no exemplo a seguir:

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

    Embora você precise colocar os valores do ValueMap entre aspas, o WMI considera os valores inteiros. Portanto, neste exemplo, você pode definir a propriedade Status como um inteiro no conjunto ValueMap: 1, 3, 99 ou 0. O WMI mapeia cada inteiro de uma posição ordinal na matriz de cadeia de caracteres do ValueMap para uma posição correspondente na matriz Valor. Por exemplo, definir Status como 0 mapeia para "Desconhecido".

  • Mapeamento de matriz para outro mapeamento de matriz para uma cadeia de caracteres.

    Caso não queira usar um inteiro para indexar sua matriz, poderá usar uma cadeia de caracteres para manter um dos valores possíveis em sua matriz. Para fazer isso, defina uma matriz Valor e ValueMap que contenham cadeias de caracteres, conforme mostrado no exemplo a seguir:

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

    Com uma propriedade de cadeia de caracteres, os valores permitidos reais da propriedade são as entradas na matriz ValueMap. Por exemplo, você pode definir Status como "OK" ou "Desconhecido".

Cabe ao aplicativo aproveitar os mapeamentos de maneira útil. Cabe ao provedor impor um intervalo legal de valores.

Comentários

Ao decidir se deseja usar os qualificadores ValueMap/Valor ou BitMap/BitValues, determine se algum dos valores indicados pode ocorrer simultaneamente. Se vários valores puderem existir simultaneamente, você deverá usar os BitMap/BitValues. Se todos os valores forem mutuamente exclusivos, você deverá usar os qualificadores ValueMap/Valor.

BitMap e BitValues