BitMap 修飾子と BitValue 修飾子

ビットマップとは、BitMap 修飾子と BitValue 修飾子をもつプロパティにリンクされている整数です。 プロパティ値の各ビットは、BitValue リスト内の値の配列へのインデックスとして機能します。 プロパティ値内の複数のビットが同時に "オン" にすることができるため、1 つのプロパティ値を使用して複数の同時実行値を示すことができます。

たとえば、次の MOF コード例では、FileType プロパティを BitMap 修飾子と BitValues 修飾子をもつものとして設定します。 さらに、下位ビット (ビット 0) が値 "読み取り専用" に対応することを確立します。 次のビット (ビット 1) は "非表示" に対応しています。以下同様に続きます。 (すべてのビットが有効である必要はありません。この 8 ビット システムでは、6 と 7 の 2 つの上位ビットは有効ではありません)。

[BitMap("0","1","2","3","4","5"),
 BitValues("Read Only",
           "Hidden",
           "System",
           "Volume Label",
           "Subdirectory",
           "Archive")]
byte FileType;

FileType プロパティが値 7 (ビット 0000 0111) を報告する場合、ファイルは "読み取り専用"、"システム"、および "非表示" になります。 FileType プロパティが値 18 (0x12、ビット 0001 0010) を報告する場合、非表示のサブディレクトリになります。

MOF コードを使用するビットマップには、次の 2 種類があります。

  • 下位ビット (ビット 0) で始まる連続した有効ビット

    ビット値の配列は、下位ビット (ビット 0) で始まり、BitValue 配列内のすべての項目を中断することなく上位に進む場合に、有効ビットを明示的に指定することなく定義できます。 次の MOF コード例では、前の例と同じ機能を実行しています。

    [BitValues("Read Only",
               "Hidden",
               "System",
               "Volume Label",
               "Subdirectory",
               "Archive")]
    byte FileType;
    
  • 有効ビットの前に非有効ビットがある

    下位ビットが有効でない場合、または有効ビットのシーケンスが連続していない場合は、BitMap 修飾子と BitValues 修飾子の両方を指定する必要があります。 次の MOF コード例では、下位ビットが有効ではなく、有効ビットのシーケンスに隙間がある状況を示しています。

    [BitMap("1","4","5"),
     BitValues("Follow-up","Delivery receipt","Read receipt")]
    sint32 MailOptions;
    

    この場合、下位ビット (ビット 0) の設定は有効ではなく、無視されます。 ただし、ビット 1 (0x2) を設定すると、この電子メール メッセージにフォローアップのフラグが設定され、ビット 4 (0x8) は、電子メール メッセージが受信者のメールボックスに到着したときに配信確認メッセージを送信者に送信する必要があることを示し、ビット 5 (0x10) を設定すると、電子メール メッセージが受信者によって開かれたときに開封確認メッセージを送信者に送信する必要があることを指定します。 3 つの有効ビット (0x1A) をすべて設定すると、電子メール メッセージの 3 つの条件がすべて指定されます。

解説

BitMap/BitValuesValueMap/Values 修飾子のどちらを使用するかを決定する際に、指定されている値のいずれかが同時に発生する可能性があるかどうかを判断します。 複数の同時実行値が存在する場合は、BitMap/BitValues を使用する必要があります。 すべての値が相互に排他的な場合は、ValueMap/Values 修飾子を使用する必要があります。

ValueMap と Value 修飾子