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 和值限定符