共用方式為


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")