SnmpCreatePdu 函数 (winsnmp.h)

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

WinSNMP SnmpCreatePdu 函数 (PDU) 创建并初始化 SNMP 协议数据单元。

语法

HSNMP_PDU SNMPAPI_CALL SnmpCreatePdu(
  [in] HSNMP_SESSION session,
  [in] smiINT        PDU_type,
  [in] smiINT32      request_id,
  [in] smiINT        error_status,
  [in] smiINT        error_index,
  [in] HSNMP_VBL     varbindlist
);

参数

[in] session

WinSNMP 会话的句柄。

[in] PDU_type

指定标识 SNMP 操作的 PDU 类型。 此参数可以为 NULL,也可以是以下值之一。 如果此参数为 NULL,则 Microsoft WinSNMP 实现将提供默认的 PDU 类型SNMP_PDU_GETNEXT。 可以通过调用 SnmpCreatePdu 函数创建的唯一陷阱 PDU 类型是 SNMPv2C 陷阱 PDU。

含义
SNMP_PDU_GET
从指定的 SNMP 变量中搜索和检索值。
SNMP_PDU_GETNEXT
在不知道变量的确切名称的情况下搜索和检索 SNMP 变量的值。
SNMP_PDU_RESPONSE
回复SNMP_PDU_GET或SNMP_PDU_GETNEXT请求。
SNMP_PDU_SET
将值存储在指定的 SNMP 变量中。
SNMP_PDU_GETBULK
使用单个请求搜索和检索多个值。
SNMP_PDU_TRAP
在 SNMPv2C 下向管理系统发出警报。

[in] request_id

指定 WinSNMP 应用程序提供用于标识 PDU 的唯一数值。 如果此参数为 NULL,则实现将赋值。

[in] error_status

如果 PDU_type 参数等于 SNMP_PDU_GETBULK,则此参数为 PDU 的 non_repeaters 字段指定值。 对于其他 PDU 类型,此参数指定 PDU error_status 字段的值。 此参数可以为 NULL。

[in] error_index

如果 PDU_type 参数等于 SNMP_PDU_GETBULK,则此参数指定 PDU max_repetitions 字段的值。 对于其他 PDU 类型,此参数指定 PDU 的error_index 字段的值。 此参数可以为 NULL。

[in] varbindlist

表示 SNMP 变量绑定列表的结构的句柄。 此参数可以为 NULL。

返回值

如果函数成功,则返回值是新 SNMP PDU 的句柄。

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

返回代码 说明
SNMPAPI_NOT_INITIALIZED
SnmpStartup 函数未成功完成。
SNMPAPI_ALLOC_ERROR
内存分配期间出错。
SNMPAPI_SESSION_INVALID
会话句柄无效。
SNMPAPI_PDU_INVALID
PDU 类型无效。
SNMPAPI_VBL_INVALID
变量绑定列表无效。
SNMPAPI_OTHER_ERROR
发生未知或未定义错误。

注解

WinSNMP 应用程序必须先创建 PDU,然后才能调用 SnmpSendMsgSnmpEncodeMsg 函数。

需要 SnmpCreatePdu 函数的所有参数。 但是,除 会话 参数之外的所有参数都可以为 NULL。 在此实例中,新的 PDU 具有以下默认值。

字段 目录
PDU_type SNMP_PDU_GETNEXT
request_id 实现将生成数值。
error_status SNMP_ERROR_NOERROR
error_index 0
varbindlist NULL
 

应用程序必须调用 SnmpFreePdu 函数来释放 SnmpCreatePdu 函数为新 PDU 分配的资源。

要求

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

另请参阅

SnmpEncodeMsg

SnmpFreePdu

SnmpSendMsg

WinSNMP 函数

WinSNMP API 概述