Qualificatori BitMap e BitValue

Una bitmap è un intero collegato a una proprietà con i qualificatori BitMap e BitValue. Ogni bit del valore della proprietà funge da indice nella matrice di valori nell'elenco BitValue . Poiché più bit nel valore della proprietà possono essere "on" contemporaneamente, è possibile usare un singolo valore di proprietà per indicare più valori simultanei.

Ad esempio, l'esempio di codice MOF seguente stabilisce la proprietà FileType come qualificatore BitMap e BitValues. Stabilisce inoltre che il bit a basso ordine (bit 0) corrisponde al valore "Sola lettura". Il bit successivo (bit 1) corrisponde a "Nascosto" e così via. Non tutti i bit devono essere significativi. In questo sistema a otto bit, i due bit ad alto ordine, 6 e 7, non hanno alcun significato.

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

Se la proprietà FileType segnala il valore 7 (bit 0000 0111), il file è "Sola lettura", "System" e "Hidden". Se la proprietà FileType segnala il valore 18 (0x12, bit 0001 0010), è una sottodirectory nascosta.

Esistono due tipi diversi di bitmap usando il codice MOF:

  • Bit significativi consecutivi a partire dal bit a basso ordine (bit 0)

    È possibile definire una matrice di valori di bit senza specificare in modo esplicito i bit significativi se i bit significativi iniziano con il bit a basso ordine (bit 0) e lo stato di avanzamento verso l'alto senza interruzioni attraverso tutti gli elementi della matrice BitValue . L'esempio di codice MOF seguente esegue la stessa funzione dell'esempio precedente.

    [BitValues("Read Only",
               "Hidden",
               "System",
               "Volume Label",
               "Subdirectory",
               "Archive")]
    byte FileType;
    
  • Bit significativo preceduto da un bit non significativo

    Se il bit a basso ordine è insignificante o la sequenza di bit significativi non è continua, è necessario specificare sia i qualificatori BitMap che BitValues . Nell'esempio di codice MOF seguente viene illustrata una situazione in cui il bit a basso ordine non è significativo e si verifica un divario nella sequenza di bit significativi.

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

    In questo caso, l'impostazione del bit a basso ordine (bit 0) non ha alcun significato e viene ignorata. Tuttavia, l'impostazione di bit 1 (0x2) indica che questo messaggio di posta elettronica viene contrassegnato per il completamento, l'impostazione di bit 4 (0x8) indica che una ricevuta di recapito deve essere inviata al mittente quando il messaggio di posta elettronica è arrivato nella cassetta postale del destinatario e l'impostazione di bit 5 (0x10) specifica che una ricevuta di lettura deve essere inviata al mittente quando il messaggio di posta elettronica viene aperto dal destinatario. L'impostazione di tutti e tre i bit significativi (0x1A) specifica tutte e tre le condizioni per il messaggio di posta elettronica.

Commenti

Per decidere se usare i qualificatoriBitMap BitValues o ValueMap//Values, determinare se uno dei valori indicati potrebbe verificarsi simultaneamente. Se possono esistere più valori simultanei, è necessario usare BitMap/BitValues. Se tutti i valori si escludono a vicenda, è consigliabile usare i qualificatori Valori ValueMap/.

Qualificatori valuemap e valore