BitMap 和 BitValue 限定符

位图是链接到具有 BitMapBitValue 限定符的属性的整数。 属性值的每个位都充当 BitValue 列表中值数组的索引。 由于属性值中的多个位可以同时处于"打开"状态,因此可以使用单个属性值来指示多个并发值。

例如,以下 MOF 代码示例将 FileType 属性建立为具有 BitMapBitValues 限定符。 它进一步确定位 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位 0001 0010) ,则它是隐藏的子目录。

使用 MOF 代码有两种不同类型的位图:

  • 以低序位开头的连续 (位 0)

    如果高位以低序位 (位 0) 开始,并且通过 BitValue 数组中所有项继续,则无需显式指定高位,即可定义位值的数组。 以下 MOF 代码示例执行与上一示例相同的函数。

    [BitValues("Read Only",
               "Hidden",
               "System",
               "Volume Label",
               "Subdirectory",
               "Archive")]
    byte FileType;
    
  • 前面有非显著位的显著位

    如果低序位不重要,或者重要位序列不是连续的,则必须同时指定 BitMapBitValues 限定符。 下面的 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 值限定符时,确定指示的任何值是否可以 / 同时发生。 如果可以存在多个并发值,则必须使用 BitMap / BitValues。 如果所有值都是互斥的,则应当使用 ValueMap / 限定符。

ValueMap 和值限定符