snmpExtensionQuery 函式 (snmp.h)
[SNMP 可用於需求一節中指定的作業系統。 它在後續版本中可能會變更或無法使用。 請改用 Windows 遠端管理,這是 WS-Man 的 Microsoft 實作。
Microsoft SNMP 服務會呼叫 SnmpExtensionQuery 函式來解析 SNMP 要求,其中包含一或多個 SNMP 延伸模組代理程式已註冊的 MIB 子樹內的變數。 此函式是SNMP擴充代理程式 API 的元素。
語法
BOOL SNMP_FUNC_TYPE SnmpExtensionQuery(
[in] BYTE bPduType,
[in, out] SnmpVarBindList *pVarBindList,
[out] AsnInteger32 *pErrorStatus,
[out] AsnInteger32 *pErrorIndex
);
參數
[in] bPduType
指定SNMP 第1版 (SNMPv1) PDU 要求類型。 此參數可以是下列其中一個值。
值 | 意義 |
---|---|
|
擷取指定變數的值或值。 |
|
擷取指定變數的語匯後續任務值或值。 |
|
在特定變數內寫入值。 |
請注意,PDU 要求類型已重新命名。 如需詳細資訊,請參閱 SNMP變數類型和要求 PDU 類型。
[in, out] pVarBindList
變數系結清單的指標。
[out] pErrorStatus
將傳回錯誤狀態結果之變數的指標。 此參數可以是SNMPv1所定義的下列其中一個值。
[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 |