snmpDecodeMsg 函数 (winsnmp.h)

[SNMP 可用于“要求”部分中指定的操作系统。 它可能在后续版本中变更或不可用。 请改用 Windows 远程管理,这是 WS-Man 的 Microsoft 实现。]

WinSNMP SnmpDecodeMsg 函数将编码的 SNMP 消息解码为其组件。 此函数执行 WinSNMP SnmpEncodeMsg 函数的相反操作。

语法

SNMPAPI_STATUS SNMPAPI_CALL SnmpDecodeMsg(
  [in]  HSNMP_SESSION   session,
  [out] LPHSNMP_ENTITY  srcEntity,
  [out] LPHSNMP_ENTITY  dstEntity,
  [out] LPHSNMP_CONTEXT context,
  [out] LPHSNMP_PDU     pdu,
  [in]  smiLPCOCTETS    msgBufDesc
);

参数

[in] session

WinSNMP 会话的句柄。 此参数是必需的。 有关其他信息,请参阅以下“备注”部分。

[out] srcEntity

指向接收源管理实体句柄的变量的指针。 有关更多信息,请参见下面的“备注”部分。

[out] dstEntity

指向接收目标管理实体句柄的变量的指针。 有关更多信息,请参见下面的“备注”部分。

[out] context

指向变量的指针,该变量接收目标管理实体控制的上下文 (一组托管对象资源) 句柄。

[out] pdu

指向一个变量的指针,该变量接收 (PDU) SNMP 协议数据单元的句柄。

[in] msgBufDesc

指向 smiOCTETS 结构的指针,该结构包含要解码为其组件的 SNMP 消息。 结构的 len 成员指定要处理的最大字节数; ptr 成员指向编码的 SNMP 消息。

返回值

如果函数成功,则返回值为解码的字节数。 此值可以等于或小于 msgBufDesc 参数指向的 smiOCTETS 结构的 len 成员。

如果函数失败,则返回值SNMPAPI_FAILURE。 若要获取扩展的错误信息,请调用 SnmpGetLastErrorSnmpGetLastError 函数可能会返回以下错误之一。

返回代码 说明
SNMPAPI_NOT_INITIALIZED
SnmpStartup 函数未成功完成。
SNMPAPI_ALLOC_ERROR
内存分配期间出错。
SNMPAPI_SESSION_INVALID
会话参数无效。
SNMPAPI_ENTITY_INVALID
一个或两个实体参数无效。
SNMPAPI_CONTEXT_INVALID
上下文参数无效。
SNMPAPI_PDU_INVALID
pdu 参数无效。
SNMPAPI_OUTPUT_TRUNCATED
输出缓冲区长度不足。 未创建任何输出参数。
SNMPAPI_MESSAGE_INVALID
msgBufDesc 参数指示的缓冲区中的 SNMP 消息格式无效。 未创建任何输出参数。
SNMPAPI_OTHER_ERROR
发生未知或未定义的错误。

注解

当应用程序将 SNMPv1 或 SNMPv2C 消息提交到 SnmpDecodeMsg 函数时,Microsoft WinSNMP 实现在 srcEntitydstEntity 参数中返回值零。 这是因为消息格式不包括创建 WinSNMP 实体资源所需的地址信息。

由于成功调用 SnmpDecodeMsg 函数,Microsoft WinSNMP 实现将资源分配给 WinSNMP 应用程序。 建议 WinSNMP 应用程序使用与资源对应的 WinSNMP 函数释放单个资源。 有关详细信息,请参阅释放 WinSNMP 描述符WinSNMP 数据管理概念

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 winsnmp.h
Library Wsnmp32.lib
DLL Wsnmp32.dll

另请参阅

SnmpEncodeMsg

SnmpFreeContext

SnmpFreeEntity

SnmpFreePdu

SnmpSendMsg

WinSNMP 函数

WinSNMP API 概述

smiOCTETS