共用方式為


snmpGetPduData 函式 (winsnmp.h)

[SNMP 可用於需求一節中指定的作業系統。 它在後續版本中可能會變更或無法使用。 請改用 Windows 遠端系統管理,這是 WS-Man 的 Microsoft 實作。

WinSNMP SnmpGetPduData 函式會從指定的 SNMP 通訊協定資料單位傳回選取的資料欄位, (PDU) 。

語法

SNMPAPI_STATUS SNMPAPI_CALL SnmpGetPduData(
  [in]  HSNMP_PDU   PDU,
  [out] smiLPINT    PDU_type,
  [out] smiLPINT32  request_id,
  [out] smiLPINT    error_status,
  [out] smiLPINT    error_index,
  [out] LPHSNMP_VBL varbindlist
);

參數

[in] PDU

SNMP PDU 的控制碼。

[out] PDU_type

接收指定 PDU 之PDU_type 欄位之變數的指標。 此參數可以是 Null,或下列其中一個值。

意義
SNMP_PDU_GET
從指定的 SNMP 變數搜尋和擷取值。
SNMP_PDU_GETNEXT
搜尋並擷取 SNMP 變數的值,而不知道變數的確切名稱。
SNMP_PDU_RESPONSE
回復 SNMP_PDU_GETSNMP_PDU_GETNEXT 要求。
SNMP_PDU_SET
將值儲存在指定的 SNMP 變數中。
SNMP_PDU_GETBULK
使用單一要求搜尋並擷取多個值。
SNMP_PDU_TRAP
將管理系統警示到 SNMPv2C 下的異常事件。

[out] request_id

接收指定 PDU 之request_id 欄位之變數的指標。 此參數可以是 Null

[out] error_status

接收指定 PDU 之error_status 欄位之變數的指標。 如果 PDU_type 參數等於 SNMP_PDU_GETBULK,此參數會收到 PDU non_repeaters 欄位的值。

此參數可以是 Null,或下列其中一個值。 SNMP 第 1 版 (SNMPv1) 和 SNMP 第 2C 版 (SNMPv2C) 常見前六個錯誤。 其餘錯誤僅適用于 SNMPv2C。

錯誤碼 意義
SNMP_ERROR_NOERROR
代理程式會報告傳輸期間未發生任何錯誤。
SNMP_ERROR_TOOBIG
代理程式無法將要求 SNMP 作業的結果放入單一 SNMP 訊息中。
SNMP_ERROR_NOSUCHNAME
要求的 SNMP 作業識別出未知的變數。
SNMP_ERROR_BADVALUE
要求的 SNMP 作業嘗試變更變數,但指定了語法或值錯誤。
SNMP_ERROR_READONLY
要求的 SNMP 作業嘗試根據變數的社群設定檔變更不允許變更的變數。
SNMP_ERROR_GENERR
要求 SNMP 作業期間發生此處所列以外的錯誤。
SNMP_ERROR_NOACCESS
無法存取指定的 SNMP 變數。
SNMP_ERROR_WRONGTYPE
值會指定與變數所需的類型不一致的型別。
SNMP_ERROR_WRONGLENGTH
值指定長度與變數所需的長度不一致。
SNMP_ERROR_WRONGENCODING
值包含抽象語法標記法 1 (ASN.1) 編碼方式,與欄位的 ASN.1 標記不一致。
SNMP_ERROR_WRONGVALUE
值無法指派給變數。
SNMP_ERROR_NOCREATION
變數不存在,而且代理程式無法建立它。
SNMP_ERROR_INCONSISTENTVALUE
此值與其他 Managed 物件的值不一致。
SNMP_ERROR_RESOURCEUNAVAILABLE
將值指派給變數需要配置目前無法使用的資源。
SNMP_ERROR_COMMITFAILED
未發生驗證錯誤,但未更新任何變數。
SNMP_ERROR_UNDOFAILED
未發生驗證錯誤。 某些變數已更新,因為無法復原其指派。
SNMP_ERROR_AUTHORIZATIONERROR
發生授權錯誤。
SNMP_ERROR_NOTWRITABLE
變數存在,但代理程式無法加以修改。
SNMP_ERROR_INCONSISTENTNAME
變數不存在;代理程式無法建立它,因為具名物件實例與其他 Managed 物件的值不一致。

[out] error_index

接收指定 PDU 之error_index 欄位之變數的指標。

如果 PDU_type 參數等於 SNMP_PDU_GETBULK,此參數會收到指定 PDU 的 max_repetitions 欄位值。 此參數可以是 Null

[out] varbindlist

接收指定 PDU 之變數系結清單欄位控制碼的變數指標。 此參數可以是 Null。 如需詳細資訊,請參閱下列一節。

傳回值

如果函式成功,傳回值會SNMPAPI_SUCCESS。

如果函式失敗,傳回值會SNMPAPI_FAILURE。 若要取得擴充的錯誤資訊,請呼叫 SnmpGetLastErrorSnmpGetLastError 函式可以傳回下列其中一個錯誤。

傳回碼 描述
SNMPAPI_NOT_INITIALIZED
SnmpStartup函式未順利完成。
SNMPAPI_ALLOC_ERROR
記憶體配置期間發生錯誤。
SNMPAPI_NOOP
所有輸出參數都是 Null。 未執行 SNMP 作業。
SNMPAPI_PDU_INVALID
PDU 類型無效。
SNMPAPI_OTHER_ERROR
發生未知或未定義的錯誤。

備註

需要 SnmpGetPduData 函式的所有參數。 不過, PDU 參數以外的所有參數都可以是 Null。 在應用程式傳遞為 Null的參數中, SnmpGetPduData 函式不會傳回值。

如果varbindlist參數不是NullSnmpGetPduData函式一律會傳回新變數系結清單物件的控制碼。 此外,如果 PDU 參數指定新的 PDU ,函式也會將控制碼附加至新的 PDU。

當應用程式使用不是Nullvarbindlist參數呼叫SnmpGetPduData時,PDU參數會指定現有的 PDU,此函式會將控制碼傳回給新的重複變數系結清單。 函式呼叫不會干擾附加至現有 PDU 的控制碼。 現有的 PDU 是應用程式使用 對 SnmpCreatePdu 函式的呼叫所建立的 PDU,或使用 對 SnmpGetPduData的呼叫來讀取應用程式所建立的 PDU。

當應用程式使用 SnmpCreatePdu建立 PDU 時,或在應用程式使用 SnmpGetPduData 讀取 PDU之後,Microsoft WinSNMP 實作會預期應用程式「知道」PDU 欄位的值。 如果應用程式第二次使用 SnmpGetPduData 讀取 PDU,則呼叫會產生指定 PDU 的變數系結清單複本。 這種類型的 SnmpGetPduData 呼叫也會複製 PDU 的控制碼。

規格需求

   
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 winsnmp.h
程式庫 Wsnmp32.lib
Dll Wsnmp32.dll

另請參閱

SnmpCreatePdu

SnmpDuplicateVbl

WinSNMP 函式

WinSNMP API 概觀