Qualificadores BitMap e BitValue
Um bitmap é um inteiro vinculado a uma propriedade com os qualificadores BitMap e BitValue. Cada bit do valor da propriedade atua como um índice na matriz de valores na lista de BitValue. Como vários bits no valor da propriedade podem estar "ativados" ao mesmo tempo, é possível usar um único valor de propriedade para indicar vários valores simultâneos.
Por exemplo, o exemplo de código MOF a seguir estabelece a propriedade FileType como tendo os qualificadores BitMap e BitValues. Ele estabelece ainda que o bit de menor ordem (bit 0) corresponde ao valor "Somente Leitura". O próximo bit (bit 1) corresponde a "Oculto" e assim por diante. (Nem todos os bits devem ser significativos. Neste sistema de oito bits, os dois bits de maior ordem, 6 e 7, não têm significado.)
[BitMap("0","1","2","3","4","5"),
BitValues("Read Only",
"Hidden",
"System",
"Volume Label",
"Subdirectory",
"Archive")]
byte FileType;
Se a propriedade FileType relatar o valor 7 (bits 0000 0111), o arquivo será "Somente Leitura", "Sistema" e "Oculto". Se a propriedade FileType relatar o valor 18 (0x12, bits 0001 0010), ele será um subdiretório oculto.
Há dois tipos diferentes de bitmaps usando o código MOF:
Bits significativos consecutivos começando com o bit de menor ordem (bit 0)
Você pode definir uma matriz de valores de bits sem especificar explicitamente os bits significativos se eles começarem com o bit de menor ordem (bit 0) e progredirem para cima sem interrupção por meio de todos os itens na matriz BitValue. O exemplo de código MOF a seguir executa a mesma função que o exemplo anterior.
[BitValues("Read Only", "Hidden", "System", "Volume Label", "Subdirectory", "Archive")] byte FileType;
Bit significativo precedido por um bit não significativo
Se o bit de menor ordem for insignificante ou a sequência de bits significativos não for contínua, você deverá especificar os qualificadores BitMap e BitValues. O exemplo de código MOF a seguir mostra uma situação em que o bit de menor ordem não é significativo e há uma lacuna na sequência de bits significativos.
[BitMap("1","4","5"), BitValues("Follow-up","Delivery receipt","Read receipt")] sint32 MailOptions;
Nesse caso, definir o bit de menor ordem (bit 0) não tem significado e será ignorado. No entanto, a configuração do bit 1 (0x2) indica que essa mensagem de email está sinalizada para acompanhamento, a configuração do bit 4 (0x8) indica que um recibo de entrega deve ser enviado ao remetente quando a mensagem de email chega à caixa de correio do destinatário e a configuração do bit 5 (0x10) especifica que um recibo de leitura deve ser enviado ao remetente quando a mensagem de email é aberta pelo destinatário. Definir todos os três bits significativos (0x1A) especifica todas as três condições para a mensagem de email.
Comentários
Ao decidir se deseja usar os qualificadores BitMap/BitValues ou ValueMap/Values, determine se algum dos valores indicados pode ocorrer simultaneamente. Se vários valores puderem existir simultaneamente, você deverá usar BitMap/BitValues. Se todos os valores forem mutuamente exclusivos, você deverá usar os qualificadores ValueMap/Values.
Tópicos relacionados