BitMap y BitValue (calificadores)
Un mapa de bits es un entero vinculado a una propiedad con los calificadores BitMap y BitValue. Cada bit del valor de propiedad actúa como un índice en la matriz de valores de la lista BitValue. Dado que varios bits del valor de propiedad pueden estar "activados" al mismo tiempo, es posible usar un único valor de propiedad para indicar varios valores simultáneos.
En el siguiente código MOF de ejemplo se establece la propiedad FileType con los calificadores BitMap y BitValues. Además, establece que el bit de orden bajo (bit 0) corresponde al valor "Solo lectura". El siguiente bit (bit 1) corresponde a "Oculto", etc. No todos los bits deben ser significativos. En este sistema de ocho bits, los dos bits de orden superior 6 y 7 no significan nada).
[BitMap("0","1","2","3","4","5"),
BitValues("Read Only",
"Hidden",
"System",
"Volume Label",
"Subdirectory",
"Archive")]
byte FileType;
Si la propiedad FileType informa del valor 7 (bits 0000 0111), el archivo es de "Solo lectura", del "Sistema" y "Oculto". Si la propiedad FileType informa del valor 18 (0x12, bits 0001 0010), es un subdirectorio oculto.
Hay dos tipos diferentes de mapas de bits que usan código MOF:
Bits significativos consecutivos que comienzan con el bit de orden bajo (bit 0)
Puede definir una matriz de valores de bits sin especificar explícitamente los bits significativos si estos empiezan con el bit de orden bajo (bit 0) y progresan hacia arriba sin interrupción en todos los elementos de la matriz BitValue. El siguiente código MOF de ejemplo realiza la misma función que en el ejemplo anterior.
[BitValues("Read Only", "Hidden", "System", "Volume Label", "Subdirectory", "Archive")] byte FileType;
Bit significativo precedido por un bit no significativo
Si el bit de orden bajo no significa nada o la secuencia de bits significativos no es continua, debe especificar los calificadores BitMap y BitValues. En el siguiente código MOF de ejemplo se muestra una situación en la que el bit de orden bajo no es significativo y hay una brecha en la secuencia de bits significativos.
[BitMap("1","4","5"), BitValues("Follow-up","Delivery receipt","Read receipt")] sint32 MailOptions;
En este caso, establecer el bit de orden bajo (bit 0) no tiene importancia y se omite. Sin embargo, establecer el bit 1 (0x2) indica que este mensaje de correo electrónico está marcado para seguimiento; la configuración del bit 4 (0x8) indica que debe enviarse una confirmación de entrega al remitente cuando el mensaje de correo electrónico haya llegado al buzón del destinatario; y el valor del bit 5 (0x10) especifica que debe enviarse una confirmación de lectura al remitente cuando el destinatario abra el mensaje de correo electrónico. Establecer los tres bits significativos (0x1A) especifica las tres condiciones del mensaje de correo electrónico.
Comentarios
Para decidir si deben usarse los calificadores BitMap/BitValues o ValueMap/Values, determine si alguno de los valores indicados podría producirse simultáneamente. Si puede haber varios valores simultáneos, debe usar BitMap/BitValues. Si todos los valores son mutuamente excluyentes, debe usar los calificadores ValueMap/Values.
Temas relacionados