共用方式為


snmpExtensionQuery 函式 (snmp.h)

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

Microsoft SNMP 服務會呼叫 SnmpExtensionQuery 函式來解析 SNMP 要求,其中包含一或多個 SNMP 延伸模組代理程式已註冊的 MIB 子樹內的變數。 此函式是SNMP擴充代理程式 API 的元素。

注意 建議您使用 SnmpExtensionQueryEx 函 式,其支援 SNMP 第 2C 版 (SNMPv2C) 數據類型和多階段 SNMP SET 作業。
 

語法

BOOL SNMP_FUNC_TYPE SnmpExtensionQuery(
  [in]      BYTE            bPduType,
  [in, out] SnmpVarBindList *pVarBindList,
  [out]     AsnInteger32    *pErrorStatus,
  [out]     AsnInteger32    *pErrorIndex
);

參數

[in] bPduType

指定SNMP 第1版 (SNMPv1) PDU 要求類型。 此參數可以是下列其中一個值。

意義
SNMP_PDU_GET
擷取指定變數的值或值。
SNMP_PDU_GETNEXT
擷取指定變數的語匯後續任務值或值。
SNMP_PDU_SET
在特定變數內寫入值。
 

請注意,PDU 要求類型已重新命名。 如需詳細資訊,請參閱 SNMP變數類型和要求 PDU 類型

[in, out] pVarBindList

變數系結清單的指標。

[out] pErrorStatus

將傳回錯誤狀態結果之變數的指標。 此參數可以是SNMPv1所定義的下列其中一個值。

意義
SNMP_ERRORSTATUS_NOERROR
代理程式會報告傳輸期間未發生任何錯誤。
SNMP_ERRORSTATUS_TOOBIG
代理程式無法將要求作業的結果放入單一 SNMP 訊息中。
SNMP_ERRORSTATUS_NOSUCHNAME
要求的作業識別出未知的變數。
SNMP_ERRORSTATUS_BADVALUE
要求的作業嘗試變更變數,但指定語法或值錯誤。
SNMP_ERRORSTATUS_READONLY
要求的作業嘗試根據變數的社群配置檔變更不允許變更的變數。
SNMP_ERRORSTATUS_GENERR
要求作業期間發生此處所列的錯誤之一以外的錯誤。

[out] pErrorIndex

將傳回錯誤索引結果之變數的指標。

傳回值

如果函式成功,則傳回值為 TRUE

如果函式失敗,傳回值為 FALSE

備註

當 SNMP 服務收到 SNMP PDU 要求時,它會呼叫 SnmpExtensionQuery 函式來處理要求。 擴充代理程式必須遵循 RFC 1157 中的規則來解決變數系結或產生錯誤。

如果延伸模組代理程式無法在 Get Next 要求上解析變數系結,則必須將 SnmpVarBind 結構的名稱欄位變更為緊接在目前支援的 MIB 子樹檢視之後的物件標識符值。 例如,如果延伸模組代理程式支援檢視 “.1.3.6.1.4.1.77.1”, “.1.3.6.1.4.1.77.1.5.1” 上的 [取得下一 個要求] 會導致 “.1.3.6.1.4.1.77.2” 的修改 名稱 字段。 這會向SNMP服務發出訊號,繼續嘗試與其他擴充代理程式解析變數系結。

請務必注意,SNMP 服務和擴充代理程式可能需要在呼叫 SnmpExtensionQuery 函式期間交換動態配置的記憶體。 服務會動態配置它傳遞給擴充代理程式的每個 SnmpVarBind 結構中的物件標識碼。 不過,擴充代理程式必須釋放此記憶體,才能在處理 Get Next 要求時取代物件識別碼。 擴充代理程式會配置可變長度物件類型的易失記憶體。 SNMP 服務會在物件置於回應 PDU 之後釋放此記憶體。

為了避免堆積損毀和記憶體流失,SNMP 服務和擴充代理程式都必須使用解析為相同堆積的記憶體配置例程。 擴充代理程式必須使用 SnmpUtilMemAlloc 函式來配置傳遞給SNMP服務的記憶體。 它必須使用 SnmpUtilMemFree 函式來釋放服務傳回給擴充代理程式的記憶體。 這些函式位於公用程式動態連結庫 SNMPAPI.DLL。

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 snmp.h

另請參閱

SNMP 函式

Simple Network Management Protocol (SNMP) 概觀

SnmpExtensionInit

SnmpUtilMemAlloc

SnmpUtilMemFree

SnmpVarBind