ValueMap 修飾子と Value 修飾子
値マップは、Value 修飾子と ValueMap 修飾子を持つプロパティにリンクされた配列です。
プロパティは、配列のインデックスとして機能し、配列内の値のいずれかを表す値を保持します。 MOF コードを使用すると、次の種類の値マップを作成できます。
整数への配列マッピング。
Value 修飾子で配列を定義して、その配列を整数プロパティに直接リンクさせることができます。その例を次に示します。
[Values {"OK", "Error", "Degraded", "Unknown"}, Read] sint32 Status;
この例では、Status プロパティの値は、Value によって定義された文字列配列のインデックスです。 このプロパティで受け取ることができるのは、Value 配列での序数位置に対応する値から 1 を引いた値のみです。 たとえば、Status を "1" に設定すると、"Error" 値にマップされます。 インデックス プロパティで受け取ることができるのは、Value 配列での位置に対応する値のみです。 たとえば、配列に 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 配列での対応する位置に各整数がマップされます。 たとえば、Status を 0 に設定すると、"Unknown" にマップされます。
文字列への別の配列マッピングへの配列マッピング。
配列のインデックス作成に整数を使用しない場合は、代わりに文字列を使用して、配列内の使用可能な値のいずれかを保持できます。 そのためには、文字列を含む Value 配列と ValueMap 配列の両方を定義する必要があります。その例を次に示します。
[ValueMap {"OK", "Error", "Degraded", "Unknown"}, Values {"OK", "Error", "Degraded", "Unknown"}, Read] string Status;
文字列プロパティでは、ValueMap 配列のエントリが、このプロパティで実際に許容可能な値です。 たとえば、Status を "OK" または "Unknown" に設定できます。
便利な方法でマッピングを活用できるかどうかは、アプリケーション次第です。 値を有効な範囲で適用できるかどうかは、プロバイダー次第です。
ValueMap/Value 修飾子か BitMap/BitValues 修飾子のどちらを使用するかを決定する際に、指定されている値のいずれかが同時に発生する可能性があるかどうかを判断します。 複数の同時実行値が存在する場合は、BitMap/BitValues を使用する必要があります。 すべての値が相互に排他的な場合は、ValueMap/Value 修飾子を使用する必要があります。