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 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 ainda estabelece que o bit de ordem baixa (bit 0) corresponde ao valor "Somente Leitura". O bit seguinte (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 alta 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 ordem baixa (bit 0)
Você pode definir uma matriz de valores de bit sem especificar explicitamente os bits significativos se os bits significativos começarem com o bit de ordem baixa (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 baixa 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 baixa 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 ordem baixa (bit 0) não tem nenhum significado e é 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 chegou à 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.
Observações
Ao decidir se deseja usar o /BitMap ou /Values qualifiers, determine se qualquer um dos valores indicados pode ocorrer simultaneamente. Se vários valores simultâneos puderem existir, você deverá usar BitMap/BitValues. Se todos os valores forem mutuamente exclusivos, você deverá usar os ValueMap/Values qualifiers.
Tópicos relacionados