SYNTAX 子句
OBJECT-TYPE 巨集包含一個 SYNTAX 子句,定義 MIB 對象的數據和類型。 雖然 SNMP 提供者會觀察對應 SYNTAX 子句的一般規則,但提供者也會遵循數種數據類型特有的規則。
注意
如需安裝提供者的詳細資訊,請參閱 設定 WMI SNMP 環境。
下列對應規則適用於下表所述的所有資料類型:
- SYNTAX 子句的文字表示法會對應至 CIM 屬性限定符 textual_convention。
- SYNTAX 子句中的具名型別定義會對應至 CIM 屬性限定符 object_syntax。 此對應會根據數據類型而有所不同。 如需詳細資訊,請參閱對應描述。
- 編碼 SNMPv1 和 SNMPv2C 通訊協定框架時所使用的 SNMP 類型會對應至 CIM 屬性限定符 編碼。
- CIM 屬性限定符 cimtype 包含格式化基礎 CIM 通訊協定值的文字表示法。
下表列出具有管理提供者對應行為之特定規則的數據類型。
SNMP 資料類型 | 描述 |
---|---|
基本類型 | 管理信息結構 (SMI) 中定義的其中一個基本數據類型記載 RFC 1213 和 RFC 1903。 |
文字慣例 | 透過明確使用 SNMPv2C TEXTUAL-CONVENTION 巨集或透過使用具名型別所產生的類型定義。 文字慣例會指派名稱和在某些情況下,將值範圍指派給現有的數據類型。 |
具名類型 | 基本類型、文字慣例或限制型別的具名參考。 |
限制類型 | 受 SMI 檔 RFC 1213 和 RFC 1903 中定義的一些子型別限制的基本類型、具名類型或文字慣例。 |
基本類型
基本類型是管理信息結構 (SMI) 檔案中定義的其中一種基本數據類型,檔 RFC 1213 和 RFC 1903。 SNMP 基本類型會對應至 CIM 定義型別。 下表列出當SYNTAX子句明確參考SNMPv1基本類型時所發生的對應。 textual_convention、編碼和 object_syntax 限定符一律與 MIB 類型相同,預設值一律 NULL。
MIB 類型 | CIM 變體類型 | cimtype 值 |
---|---|---|
整數 | VT_I4 | sint32 |
OCTETSTRING | VT_BSTR | 字串 |
OBJECTIDENTIFIER | VT_BSTR | 字串 |
零 | VT_NULL | 不支援 |
IpAddress | VT_BSTR | 字串 |
計數器 | VT_I4 | uint32 |
軌距 | VT_I4 | uint32 |
TimeTicks | VT_I4 | uint32 |
不透明 | VT_BSTR | 字串 |
NetworkAddress | VT_BSTR | 字串 |
當 SYNTAX 子句參考 NULL時,提供者會忽略 OBJECT-TYPE 巨集,無論是明確還是透過具名類型指派。 下表列出當SYNTAX子句明確參考SNMPv2基本類型時所發生的對應。 textual_convention、編碼和 object_syntax 限定符一律與 MIB 類型相同,預設值一律 NULL。
MIB 類型 | CIM 變體類型 | cimtype 值 |
---|---|---|
整數 | VT_I4 | sint32 |
OCTET STRING | VT_BSTR | 字串 |
物件標識碼 | VT_BSTR | 字串 |
IpAddress | VT_BSTR | 字串 |
Counter32 | VT_I4 | uint32 |
量測計32 | VT_I4 | uint32 |
Unsigned32 | VT_I4 | uint32 |
Integer32 | VT_I4 | sint32 |
Counter64 | VT_BSTR | uint64 |
TimeTicks | VT_I4 | uint32 |
不透明 | VT_BSTR | 字串 |
具名類型
SNMP 具名類型會對應至 CIM 定義的類型。 當 SYNTAX 子句參考 基本類型、文字慣例,或透過類型指派衍生 限制類型時,請使用這些類型來判斷套用的對應程式。
如果透過類型指派規則的衍生,您會遇到限制的類型定義:
- 而且,如果透過進一步的衍生,您遇到 TEXTUAL-CONVENTION Macro中列出的其中一個文字慣例,則請套用限制型別和文字慣例的對應規則。
- 否則,如果您在任一基本類型數據表中遇到其中一個基本類型,請套用基本型別和限制型別的對應規則。
如果您遇到 TEXTUAL_CONVENTION 巨集中列出的其中一個文字慣例,請套用文字慣例的對應規則。
如果您遇到任一基本類型數據表中列出的其中一個基本類型,請套用基本類型的對應規則。
注意
包含不符合上述對應之屬性類型的類別無效。 在此情況下,如果提供者在執行實例擷取函式時要求擷取類別定義,則提供者會傳回錯誤。
限制類型
限制類型是基本類型、具名型別或文字慣例,受到 SMI 檔 RFC 1213 和 RFC 1903 中定義的一些子系結機制所限制。 發生子型別時,需要額外的 CIM 限定符來指定子類型值。 SYNTAX 子句中的具名型別定義會將逐字對應至 CIM 屬性限定符 object_syntax,但不包括子類型的條件約束。
子類型可能遵循下列任何格式:
列舉的 INTEGER
CIM 屬性限定符 列舉 指定列舉值。 這個限定符會以字串表示,其中包含帶正負號 32 位整數值的逗號分隔清單。 下表列出對應類型。 預設值一律 NULL。
限制MIB類型 | CIM 變體類型 | CIM 限定符 |
---|---|---|
列舉的 INTEGER | VT_BSTR |
textual_convention:enumeratedinteger 編碼:INTEGER cimtype: string |
位
CIM 屬性限定符 位 指定列舉值。 這個限定符會以字串表示,其中包含帶正負號 32 位整數值的逗號分隔清單。 下表列出對應類型。 預設值一律 NULL。
限制MIB類型 | CIM 變體類型 | CIM 限定符 |
---|---|---|
位 | VT_ARRAY |VT_BSTR |
textual_convention:位 編碼:OCTETSTRING cimtype: string |
可變長度
當 SYNTAX 子句參照為可變長度 OCTET STRING 或 Opaque 的基本類型、具名型別或文字慣例時,CIM 屬性限定符 variable_length 會指定與類型定義相關聯的最小、最大值和固定長度值。 此限定符會以下列格式實作為字串,其中可變長度值會以不帶正負號的 32 位整數表示。
(((0.9) .. (0.9)) | (0.9))(, (((0.9) .. (0.9)) | (0.9)))*
固定長度
當SYNTAX子句參照為固定長度 OCTET STRING 或 Opaque 的基本類型、具名型別或文字慣例時,CIM 屬性限定符 fixed_length 指定固定長度值。 這個限定符會以不帶正負號的 32 位整數值表示。
範圍
當 SYNTAX 子句參考基本型別、具名型別或文字慣例時,該類型為範圍或固定值 INTEGER 或量測計,CIM 屬性限定符 variable_value 會指定與類型定義相關聯的範圍和固定值。 此限定符會以下列格式實作為字串,其中範圍和固定長度值會以不帶正負號的 32 位整數表示。
(((0.9)..(0.9))|(0.9))(,(((0.9)..(0.9))|(0.9)))*
範例程序代碼
下列範例描述列舉的 INTEGER 子類型。
Status := INTEGER {
up(1),
down(2),
testing(3)
}
此範例對應至:
enumeration("up(1),down(2),testing(3)")
下列程式代碼範例描述 BITS 子類型。
Status := BITS {
up(1),
down(2),
testing(3)
}
下列程式代碼範例會對應至:
bits("up(1),down(2),testing(3)")
下列程式代碼範例描述可變長度子類型。
MySnmpOSIAddress ::= TEXTUAL-CONVENTION
DISPLAY-HINT "*1x:/1x:"
STATUS current
DESCRIPTION
"Represents an OSI transport-address:
octets contents encoding
1 length of NSAP 'n' as an unsigned-integer
(either 0 or from 3 to 20)
2..(n+1) NSAP concrete binary representation
(n+2)..m TSEL string of (up to 64) octets
"
SYNTAX OCTET STRING (SIZE (1|4..85))
此範例對應至:
display_hint("*1x:/1x:"),
encoding("OCTETSTRING"),
textual_convention("OCTETSTRING"),
variable_length ("1,4..85")
下列範例描述固定長度子類型。
IPXADDRESS := OCTET STRING (SIZE (6))
此範例對應至:
fixed_length(6)
下列範例描述範圍子類型。
Status := INTEGER (10..20|8)
此範例對應至:
variable_value("10..20,8")