INDEX 字句
INDEX 子句指定用于在标量或表集合中选择唯一行的键。 SNMP 提供程序根据 SNMP 设备使用的表类型映射到不同类型的 CIM 类。 由于键可以是多种类型的对象,因此提供程序根据键中的对象类型使用不同的映射规则。 有关详细信息,请参阅 INDEX 子句数据类型。
注意
有关安装提供程序的详细信息,请参阅设置 WMI SNMP 环境。
标量集合映射到 CIM 单一实例类:即只能有一个实例的类。 由于无需从一个实例唯一标识另一个实例,因此单一实例类不会将一个或多个属性指定为键。 从标量集合生成的类:
- 不包含 Key 属性限定符。
- 包含标准 CIM 类限定符 Singleton,其类型为 Bool。
表集合映射到可以有多个实例的 CIM 类。 因此,CIM 类定义必须至少包含一个用于定义对象键的属性,即,唯一标识类实例的属性。 表集合的 OBJECT-TYPE 宏的 INDEX 子句指定集合的键属性集。 以下映射规则适用:
类型为 Bool 的 CIM 限定符 Key 定义键属性。
表集合中 INDEX 信息的顺序定义了 CIM 类定义中的键顺序。
CIM 限定符 Key_Order 定义键的顺序。 此限定符是一个无符号的 32 位整数值,出于 MOF 限定符语法的目的,必须使用二进制补码运算将其转换为带符号的 32 位整数值。
目前,SNMPv2C INDEX 子句的映射不会处理 IMPLIED 限定符的使用。 在这种情况下不会生成 CIM 类定义。
INDEX 子句数据类型
由于 OBJECT-TYPE 宏中 INDEX 子句的灵活性,无法直接指定键控属性。 相反,应考虑 INDEX 子句可能包含以下一种或多种数据类型的可能性:
可在内部访问的 indexobject 值
indexobject 值是一个命名值,它引用出现在包含 INDEX 子句的同一表的概念行中的 MIB 对象定义。 INDEX 子句中引用的 MIB 对象定义映射到 CIM 类定义的键属性。
可在外部访问的 indexobject 值
在这种情况下,indexobject 是一个命名值,它引用出现在不同表的概念行中的 MIB 对象定义。
可访问的 indextype 值
indextype 值是引用以下数据类型之一的命名类型:INTEGER、OCTET STRING、OBJECT IDENTIFIER、NetworkAddress 或 IpAddress。 如果 INDEX 子句包含 MIB 类型引用,则以下映射规则适用:
- 引用的 MIB 对象映射到 CIM 类定义的键属性。 其类型语法基于指定的 indextype 值,该值通过标准 SYNTAX 子句映射过程映射到 CIM 属性限定符。
- 映射过程通过连接 MIB 表对象描述符、下划线 (_) 和 INDEX 子句 indextype 值的排列顺序来生成唯一的属性名称。 例如,MIB 表 enterpriseIfTable 的第三个组成部分 indextype 的属性名称是 enterpriseIfTable_3。
- 使用 Virtual_Key 限定符批注 CIM 属性。 此限定符指定 SNMP 提供程序应根据与类定义中所有可访问 MIB 对象定义关联的实例信息的超集来计算属性值。
- CIM 类定义必须至少包含一个没有关联 Virtual_Key 限定符的属性;不指定此属性会导致类定义失效。
固定长度子类型
当 SNMP 表集合的 INDEX 子句包含子类型为固定长度 OCTET STRING 的受 SNMP 支持的类型时,必须使用 CIM 属性限定符 Fixed_Length 来指定此值。