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/.
Argomenti correlati