SnmpRecvMsg 函数 (winsnmp.h)

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

WinSNMP SnmpRecvMsg 函数以 SNMP 消息的形式检索由对 SnmpSendMsg 函数的调用提交的已完成异步请求的结果。 SnmpRecvMsg 函数还会返回未完成的陷阱数据和为 WinSNMP 会话注册的通知。

语法

SNMPAPI_STATUS SNMPAPI_CALL SnmpRecvMsg(
  [in]  HSNMP_SESSION   session,
  [out] LPHSNMP_ENTITY  srcEntity,
  [out] LPHSNMP_ENTITY  dstEntity,
  [out] LPHSNMP_CONTEXT context,
  [out] LPHSNMP_PDU     PDU
);

参数

[in] session

WinSNMP 会话的句柄。

[out] srcEntity

指向变量的指针,该变量接收发送消息的实体的句柄。 请注意,SnmpRegister 函数的 srcEntity 参数指定注册陷阱通知的管理实体的句柄。

[out] dstEntity

指向变量的指针,该变量接收接收消息的实体的句柄。 请注意,SnmpRegister 函数的 dstEntity 参数指定发送陷阱的管理实体的句柄。

[out] context

指向一个变量的指针,该变量接收上下文的句柄,上下文是一组托管对象资源。 srcEntity 参数指定的实体从此上下文发出消息。

[out] PDU

指向一个变量的指针,该变量接收协议数据单元 (消息的 PDU) 组件。

返回值

如果函数成功,则返回值SNMPAPI_SUCCESS,并且输出参数包含上述参数说明中指示的值。

如果函数失败,则返回值SNMPAPI_FAILURE。 如果函数失败并显示指示网络传输层错误(即以 SNMPAPI_TL_ 开头的)的扩展错误代码,则输出参数还包含前面指示的值,使 WinSNMP 应用程序能够正常恢复。

若要获取扩展错误信息,请调用 SnmpGetLastErrorSnmpGetLastError 函数可能会返回以下 WinSNMP 或网络传输层错误之一。

返回代码 说明
SNMPAPI_NOT_INITIALIZED
SnmpStartup 函数未成功完成。
SNMPAPI_ALLOC_ERROR
内存分配期间出错。
SNMPAPI_SESSION_INVALID
会话参数无效。
SNMPAPI_NOOP
指定的会话目前在其队列中没有消息。
SNMPAPI_TL_NOT_INITIALIZED
未初始化网络传输层。
SNMPAPI_TL_NOT_SUPPORTED
网络传输层不支持 SNMP 协议。
SNMPAPI_TL_NOT_AVAILABLE
网络子系统失败。
SNMPAPI_TL_RESOURCE_ERROR
网络传输层中发生资源错误。
SNMPAPI_TL_UNDELIVERABLE
dstEntity 参数指定的实体不可用。
SNMPAPI_TL_SRC_INVALID
srcEntity 参数指定的实体未初始化。
SNMPAPI_TL_INVALID_PARAM
网络传输层函数调用收到无效的输入参数。
SNMPAPI_TL_PDU_TOO_BIG
PDU 太大,网络传输层无法发送或接收。
SNMPAPI_TL_OTHER
发生未定义的网络传输层错误。
SNMPAPI_OTHER_ERROR
发生未知或未定义错误。
 

有关其他信息,请参阅 网络传输错误

注解

SnmpCreateSession 函数将应用程序窗口句柄和通知消息标识符传递给 Microsoft WinSNMP 实现。 当应用程序窗口收到由 wMsg 参数指定的通知消息时,WinSNMP 应用程序必须使用 SnmpCreateSession 返回的会话句柄调用 SnmpRecvMsg 函数,以检索传入的协议数据单元 (PDU) 。 有关其他信息,请参阅 关于 SNMP 消息

SnmpRecvMsg 函数实例化四个对象并分配其资源:两个实体句柄、一个上下文句柄和一个 PDU 句柄。 在 WinSNMP 应用程序调用 SnmpGetPduData 函数之前,不会实例化返回的 PDU 的变量绑定列表组件的句柄。 当它不再需要 SnmpRecvMsg 返回的资源时,WinSNMP 应用程序必须使用对应于该资源的 WinSNMP 函数释放各个资源。 有关其他信息,请参阅 SnmpFreePduSnmpFreeEntitySnmpFreeContext

当实现从在 SNMP 版本 1 框架 (SNMPv1) 下运行的实体接收陷阱时,它将陷阱转换为 SNMP 版本 2C (SNMPv2C) 格式。 因此,当 SnmpRecvMsg 提供陷阱时,它始终采用 SNMPv2C 格式。 有关其他信息,请参阅 将陷阱从 SNMPv1 转换为 SNMPv2CWinSNMP 编程任务

要求

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

另请参阅

SnmpFreeContext

SnmpFreeEntity

SnmpFreePdu

SnmpGetPduData

SnmpRegister

SnmpSendMsg

WinSNMP 函数

WinSNMP API 概述