snmpSendMsg 函数 (winsnmp.h)

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

WinSNMP 应用程序调用 SnmpSendMsg 函数,以请求 Microsoft WinSNMP 实现以 SNMP 消息的形式 (PDU) 传输 SNMP 协议数据单元。 WinSNMP 应用程序指定请求的源实体、目标实体和上下文。

如果 WinSNMP 应用程序需要 PDU 以响应 SnmpSendMsg 请求,则必须检索 PDU。 为此,应用程序必须使用 SnmpCreateSession 返回的会话句柄调用 SnmpRecvMsg 函数。

语法

SNMPAPI_STATUS SNMPAPI_CALL SnmpSendMsg(
  [in] HSNMP_SESSION session,
  [in] HSNMP_ENTITY  srcEntity,
  [in] HSNMP_ENTITY  dstEntity,
  [in] HSNMP_CONTEXT context,
  [in] HSNMP_PDU     PDU
);

参数

[in] session

WinSNMP 会话的句柄。

[in] srcEntity

管理实体的句柄,该实体启动发送 SNMP 消息的请求。

[in] dstEntity

将响应 SNMP 请求的目标实体的句柄。

[in] context

上下文的句柄, (目标管理实体控制) 一组托管对象资源。

[in] PDU

包含 SNMP 操作请求的协议数据单元的句柄。

返回值

如果函数成功,则返回值SNMPAPI_SUCCESS。

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

返回代码 说明
SNMPAPI_NOT_INITIALIZED
SnmpStartup 函数未成功完成。
SNMPAPI_ALLOC_ERROR
内存分配期间出错。
SNMPAPI_SESSION_INVALID
会话参数无效。
SNMPAPI_ENTITY_INVALID
一个或两个实体参数无效。
SNMPAPI_CONTEXT_INVALID
上下文参数无效。
SNMPAPI_PDU_INVALID
PDU 参数无效。
SNMPAPI_OPERATION_INVALID
PDU 的 PDU_type 字段中指定的操作不适用于目标实体。 有关更多信息,请参见下面的“备注”部分。
SNMPAPI_TL_NOT_INITIALIZED
未初始化网络传输层。
SNMPAPI_TL_NOT_SUPPORTED
网络传输层不支持 SNMP 协议。
SNMPAPI_TL_NOT_AVAILABLE
网络子系统失败。
SNMPAPI_TL_RESOURCE_ERROR
网络传输层中发生资源错误。
SNMPAPI_TL_SRC_INVALID
srcEntity 参数指定的实体未初始化。
SNMPAPI_TL_INVALID_PARAM
网络传输层函数调用收到无效的输入参数。
SNMPAPI_TL_PDU_TOO_BIG
PDU 太大,网络传输层无法发送或接收。
SNMPAPI_TL_OTHER
发生未定义的网络传输层错误。
SNMPAPI_OTHER_ERROR
发生未知或未定义的错误。
 

有关详细信息,请参阅 网络传输错误

注解

SnmpSendMsg 函数异步执行,因此会立即返回。

异步请求完成时,实现会通知 WinSNMP 应用程序。 实现通过在会话对 SnmpCreateSession 的初始调用中分别向 wMsghWnd 参数指定的窗口发送通知消息来执行此操作。 当应用程序窗口收到通知消息时,WinSNMP 应用程序必须检索传入的 PDU。 应用程序通过使用 SnmpCreateSession 返回的会话句柄调用 SnmpRecvMsg 函数来执行此操作。

当 WinSNMP 应用程序调用 SnmpSendMsg 函数时,实现将确定要用于完成传输请求的网络传输协议和 SNMP 版本框架。 实现通过将其功能与与请求会话和目标管理实体关联的属性进行匹配来确定这一点。 可从实现的 数据库中的值获取此信息。

如果 WinSNMP 应用程序请求在 SNMP 版本 2C 框架 (SNMPv2C) 下可用的功能,但目标实体使用 SNMP 版本 1 框架 (SNMPv1) ,则实现将尝试将请求转换为 SNMPv1。 为此,该实现使用RFC1908“Internet 标准网络管理框架的版本 1 和版本 2 之间的共存”中定义的过程。如果无法转换, SnmpSendMsg 将失败,并显示扩展错误代码SNMPAPI_OPERATION_INVALID。 例如,当应用程序尝试将数据类型 为 SNMP_PDU_InformRequest 的 PDU 发送到 SNMPv1 目标实体时,会出现这种情况。

有关详细信息,请参阅 WinSNMP 编程任务关于 SNMP 消息

要求

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

另请参阅

SnmpCreateSession

SnmpRecvMsg

WinSNMP 函数

WinSNMP API 概述