多个陷阱注册

当 WinSNMP 应用程序为陷阱或通知注册 WinSNMP 会话时,可以使用多种选项。 因此,应用程序可以多次调用 SnmpRegister 函数,实际上定义用于接收陷阱和通知的自定义筛选器。 例如,可以注册一种类型的陷阱或通知,或者注册所有陷阱和通知,具体取决于 通知 参数的值。 此外,应用程序可以在 SnmpRegister 函数的其他参数中指定值,以进一步定义应到达应用程序的陷阱和通知。 有关详细信息,请参阅 管理陷阱和通知

下面是对 SnmpRegister 的多次调用是冗余的实例。 在这些情况下,如果函数成功完成, SnmpRegister 将返回SNMPAPI_SUCCESS,但冗余注册无效。

  1. 在上一次调用 SnmpRegister 请求传递所有陷阱和通知之后,调用 SnmpRegister 函数,请求将陷阱和通知筛选传递到会话, (未筛选传递) 。 此调用是冗余的,因为会话已接收所有陷阱和通知,包括筛选器定义的单个类型。
  2. SnmpRegister 的重复调用,或对会话的上一次调用 SnmpRegister 时参数列表与参数列表相同的调用。
  3. SnmpRegister 函数的调用,该函数请求基于对象标识符筛选传递陷阱和通知 (OID) 其前缀是在上一次调用 SnmpRegister 中指定的 OID。 例如,可以在 通知 参数中指定“1.3.6.1.4.1.311”,以接收源自任何 Microsoft SNMP 代理实体的通知。 如果再次调用 SnmpRegister 并指定“1.3.6.1.4.1.311.1”,则第二次调用是多余的,因为会话已收到包含 OID 前缀“1.3.6.1.4.1.311”的所有陷阱和通知。

若要取消注册会话,必须匹配对 SnmpRegister 函数的每个唯一注册调用。 调用 SnmpRegister 以注销会话,并确保 SnmpRegister 的前五个参数与初始注册调用中的参数相同。 初始调用和取消注册调用之间的唯一区别在于,注册时必须在 status 参数中指定值SNMPAPI_ON,并且调用要注销的函数时,必须指定SNMPAPI_OFF。 无需将冗余注册调用匹配到 SnmpRegister 函数。 只需匹配第一个唯一注册调用。

若要更改筛选条件,应用程序可能需要先注销并禁用某些陷阱或通知的传递。 然后,应用程序可以通过调用 SnmpRegister 来创建新的筛选器,并传递相应的值。