解释位域属性

某些 SMS 对象属性实现为位字段,其中整数 (的单个二进制位通常是 uint32 数据类型) 用作布尔标志来存储信息。 这些属性在用户界面上难以解释,因为位字段通常显示为十进制数。

例如,安全用户类权限对象 (SMS_UserClassPermissions) 包含名为 ClassPermissions 的整数属性,该属性定义为具有以下位标志的 int32 数据类型:

Flag
0 读取
1 修改
2 DELETE
3 分发
4 CREATE_CHILD
5 REMOTE_CONTROL
6 做广告
7 MODIFY_RESOURCE
8 管理
9 DELETE_RESOURCE
10 创建
11 VIEW_COLL_FILE
12 READ_RESOURCE
13 委托
14
15 MANAGESQLCOMMAND
16 MANAGESTATUSFILTER

此位字段的典型值可能是10100000111。 位 0 是右侧) (最小有效位,其他位从右到左计数。 因此,在此示例中,可用的类权限包括 READ、MODIFY、DELETE、ADMINISTER 和 CREATE,分别对应于位字段 0、1、2、8 和 10。

当二进制数10100000111在 SMS 管理员控制台中显示为十进制数 1287 以及解释位的方式时,会出现困难。 解决方案是在“附件”组中打开 Windows 计算器应用程序 (Calc.exe) 。 使用“科学”视图,设置十进制模式的计算器,然后输入 1287。 使用计算器的单选按钮转换为二进制显示器。 此时会显示二进制位字段10100000111。 可以从此显示读取所选位标志。

注意

在典型的位字段属性中,许多位未使用且没有定义的含义。