Квалификаторы BitMap и BitValue

Растровое изображение — это целое число, связанное со свойством с квалификаторами BitMap и BitValue . Каждый бит значения свойства выступает в качестве индекса в массиве значений в списке BitValue . Так как несколько битов в значении свойства могут быть одновременно "включено", можно использовать одно значение свойства для указания нескольких параллельных значений.

Например, в следующем примере кода MOF свойство FileType устанавливается как имеющее квалификаторы BitMap и BitValues . Он также устанавливает, что бит нижнего порядка (бит 0) соответствует значению "Только для чтения". Следующий бит (бит 1) соответствует значению "Hidden" и т. д. (Не все биты должны быть значительными. В этой восьмибитной системе два бита высокого порядка, 6 и 7, не имеют значения.)

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

Если свойство FileType сообщает значение 7 (биты 0000 0111), файл имеет значение "Только для чтения", "Система" и "Скрытый". Если свойство FileType сообщает значение 18 (0x12, bits 0001 0010), это скрытый подкаталог.

Существует два разных типа растровых изображений, использующих MOF-код:

  • Последовательные значимые биты, начиная с бита нижнего порядка (бит 0)

    Вы можете определить массив битовых значений без явного указания значимых битов, если значимые биты начинаются с бита низкого порядка (бит 0) и двигают вверх без прерывания по всем элементам в массиве BitValue . В следующем примере кода MOF выполняется та же функция, что и в предыдущем примере.

    [BitValues("Read Only",
               "Hidden",
               "System",
               "Volume Label",
               "Subdirectory",
               "Archive")]
    byte FileType;
    
  • Значимый бит, которому предшествует незначимый бит

    Если бит нижнего порядка незначителен или последовательность значимых битов не является непрерывной, необходимо указать квалификаторы BitMap и BitValues . В следующем примере кода MOF показана ситуация, в которой бит нижнего порядка не является значительным и существует пробел в последовательности значимых битов.

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

    В этом случае задание бита нижнего порядка (бит 0) не имеет значения и игнорируется. Однако задание бита 1 (0x2) означает, что это сообщение электронной почты помечено для последующего выполнения, установка бита 4 (0x8) означает, что уведомление о доставке должно быть отправлено отправителю, когда сообщение поступило в почтовый ящик получателя, а задание бита 5 (0x10) указывает, что уведомление о прочтении должно быть отправлено отправителю, когда сообщение электронной почты открывается получателем. Задание всех трех значимых битов (0x1A) определяет все три условия для сообщения электронной почты.

Комментарии

При принятии решения о том, следует ли использовать квалификаторы BitMap/BitValues или ValueMap/ Values, определите, может ли любое из указанных значений возникать одновременно. Если может существовать несколько параллельных значений, необходимо использовать BitMap/BitValues. Если все значения являются взаимоисключающими, следует использовать квалификаторы ValueMap/Values .

ValueMap и квалификаторы значений