Квалификаторы 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 .
Связанные темы