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。 若要获取扩展的错误信息,请调用 SnmpGetLastError。 SnmpGetLastError 函数可能会返回以下 WinSNMP 或网络传输层错误之一。
返回代码 | 说明 |
---|---|
|
SnmpStartup 函数未成功完成。 |
|
内存分配期间出错。 |
|
会话参数无效。 |
|
一个或两个实体参数无效。 |
|
上下文参数无效。 |
|
PDU 参数无效。 |
|
PDU 的 PDU_type 字段中指定的操作不适用于目标实体。 有关更多信息,请参见下面的“备注”部分。 |
|
未初始化网络传输层。 |
|
网络传输层不支持 SNMP 协议。 |
|
网络子系统失败。 |
|
网络传输层中发生资源错误。 |
|
srcEntity 参数指定的实体未初始化。 |
|
网络传输层函数调用收到无效的输入参数。 |
|
PDU 太大,网络传输层无法发送或接收。 |
|
发生未定义的网络传输层错误。 |
|
发生未知或未定义的错误。 |
有关详细信息,请参阅 网络传输错误。
注解
SnmpSendMsg 函数异步执行,因此会立即返回。
异步请求完成时,实现会通知 WinSNMP 应用程序。 实现通过在会话对 SnmpCreateSession 的初始调用中分别向 wMsg 和 hWnd 参数指定的窗口发送通知消息来执行此操作。 当应用程序窗口收到通知消息时,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 |