snmpSetPort 函数 (winsnmp.h)

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

WinSNMP 应用程序调用 SnmpSetPort 函数来更改分配给目标实体的端口。 SnmpSetPort 函数是 WinSNMP API 版本 2.0 的元素。

语法

SNMPAPI_STATUS SNMPAPI_CALL SnmpSetPort(
  [in] HSNMP_ENTITY hEntity,
  [in] UINT         nPort
);

参数

[in] hEntity

WinSNMP 目标实体的句柄。 此参数可以指定由于调用 SnmpListen 函数而充当 SNMP 代理应用程序角色的实体的句柄。 有关更多信息,请参见下面的“备注”部分。

[in] nPort

指定标识目标实体的新端口分配的无符号整数。 如果指定了正忙的本地地址,或者指定了不可用的远程地址,则对 SnmpSetPort 函数的调用会失败。

返回值

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

如果函数失败,则返回值SNMPAPI_FAILURE。 若要获取扩展的错误信息,请调用 SnmpGetLastError,并在其会话参数中指定 NULL 值。 SnmpGetLastError 函数可能会返回以下错误之一。

返回代码 说明
SNMPAPI_NOT_INITIALIZED
SnmpStartup 函数未成功完成。
SNMPAPI_OPERATION_INVALID
由于调用 SnmpListen 函数,由 hEntity 参数指定的实体已在代理角色中运行。 有关更多信息,请参见下面的“备注”部分。
SNMPAPI_ENTITY_INVALID
hEntity 参数无效。 此参数必须是先前调用 SnmpStrToEntity 函数返回的句柄。
SNMPAPI_OTHER_ERROR
发生未知或未定义的错误。

注解

由于 WinSNMP 应用程序调用 SnmpStrToEntity 函数,Microsoft WinSNMP 实现将端口分配给每个管理实体。 如果在实现创建实体时SNMPAPI_UNTRANSLATED模式有效,则实现通常会将相应协议系列的标准 SNMP 请求端口分配给实体;例如 UDP 161 或 IPX 36879。 如果SNMPAPI_TRANSLATED模式有效,则实现会为 WinSNMP 数据库中的实体分配指定的端口。 若要检索对实现有效的当前实体和上下文转换模式,应用程序可以调用 SnmpGetTranslateMode 函数。 有关详细信息,请参阅 设置实体和上下文转换模式WinSNMP 数据库

如果 hEntity 参数指定的实体当前正在代理角色中运行,则对 SnmpSetPort 函数的调用将失败。 这是因为实体已分配给 nPort 参数指定的端口以外的端口。 为了确保将代理应用程序分配到特定端口,WinSNMP 应用程序可以执行以下步骤。

  1. 按如下所示调用 SnmpStrToEntity

    hAgent = SnmpStrToEntity (hSession, <addrString>);

  2. 按如下所示调用 SnmpSetPort

    SnmpSetPort (hAgent, <nPort>);

  3. 按如下所示调用 SnmpListen

    SnmpListen (hAgent, SNMPAPI_ON);

其中 <addrString> 包含 IP 地址或 IPX 地址的字符串表示形式, <nPort> 包含代理应用程序的新端口分配。

请注意,IPX 地址包含一个由八位十六进制数字组成的网络号码 (填充零(如有必要) );分隔符 (“:”、“.”或“ – ”) ;以及一个由 12 个十六进制数字组成的节点编号, () 必要时填充零,例如,00000001:00081A0D01C2。 有关详细信息,请参阅 WinSNMP 中对 IPX 地址字符串的支持

要求

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

另请参阅

SnmpGetTranslateMode

SnmpListen

SnmpStrToEntity

WinSNMP 函数

WinSNMP API 概述