共用方式為


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 值
INTEGER VT_I4 sint32
OCTETSTRING VT_BSTR string
OBJECTIDENTIFIER VT_BSTR string
NULL VT_NULL 不支援
IpAddress VT_BSTR string
計數器 VT_I4 uint32
量測計 VT_I4 uint32
TimeTicks VT_I4 uint32
Opaque VT_BSTR string
NetworkAddress VT_BSTR string

當 SYNTAX 子句明確或透過具名類型指派參考 Null時,提供者會忽略 OBJECT-TYPE 宏。 下表列出當 SYNTAX 子句明確參考 SNMPv2 的基本類型時所發生的對應。 textual_convention編碼object_syntax限定詞一律與 MIB 類型相同,預設值一律為Null

MIB 類型 CIM 變體類型 cimtype 值
INTEGER VT_I4 sint32
OCTET STRING VT_BSTR string
物件識別碼 VT_BSTR string
IpAddress VT_BSTR string
Counter32 VT_I4 uint32
量測計32 VT_I4 uint32
Unsigned32 VT_I4 uint32
Integer32 VT_I4 sint32
Counter64 VT_BSTR uint64
TimeTicks VT_I4 uint32
Opaque VT_BSTR string

具名類型

SNMP 具名類型對應至 CIM 定義的類型。 當 SYNTAX 子句透過型別指派衍生參考 基本類型文字慣例限制型 別時,請使用這些類型來判斷套用的對應程式。

  • 如果透過型別指派規則的衍生,您會遇到受限制的類型定義:

    • 如果透過進一步的衍生,您遇到 TEXTUAL-CONVENTION 宏中列出的其中一個文字慣例,則套用限制類型和文字慣例的對應規則。
    • 否則,如果您遇到任一基本類型資料表中列出的其中一個基本類型,請套用基本型別和限制型別的對應規則。
  • 如果您遇到 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
  • BITS

    CIM 屬性限定詞 會指定列舉值。 這個限定詞會以字串表示,其中包含帶正負號 32 位整數值的逗號分隔清單。 下表列出對應類型。 預設值一律為 Null

限制 MIB 類型 CIM 變體類型 CIM 限定詞
BITS VT_ARRAY |VT_BSTR textual_convention:位
編碼:OCTETSTRING
cimtype: string
  • Variable-length

    當 SYNTAX 子句參考基本類型、具名型別或文字慣例時,子類型為可變長度的 OCTET STRING 或 Opaque 時,CIM 屬性限定詞 variable_length 會指定與類型定義相關聯的最小、最大值和固定長度值。 此限定詞會以下列格式實作為字串,其中可變長度值會以不帶正負號的 32 位整數表示。

    (((0.9) .. (0.9)) | (0.9))(, (((0.9) .. (0.9)) | (0.9)))*
    
  • Fixed-length

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