可扩展代理调用扩展代理DLL中的SnmpExtensionTrap函数来检索扩展代理生成的陷阱。
BOOL SnmpExtensionTrap(
AsnObjectIdentifier【*企业】, | //生成企业 |
AsnInteger【* genericTrap】, | //生成陷阱类型 |
AsnInteger【* specificTrap】, | //企业特定类型 |
AsnTimeticks【*时间】, | //时间戳 |
RFC1157VarBindList【* variableBindings】 | //变量绑定 |
); |
参数
【企业】
[out]指向生成陷阱的源对象的对象标识符。可扩展代理不会释放此变量的内存。
【genericTrap】
[out]指出通用陷阱的指示。此参数可以是以下值之一:
值 | 含义 |
SNMP_GENERICTRAP_COLDSTART | 代理正在管理模式下初始化协议实体。它可能会改变其视图中的对象。 |
SNMP_GENERICTRAP_WARMSTART | 代理程序正在自己重新初始化,但不会改变其视图中的对象。 |
SNMP_GENERICTRAP_LINKDOWN | 附加的界面已从up状态更改为下状态。第一个变量标识接口。 |
SNMP_GENERICTRAP_LINKUP | 附加的界面已从下状态更改为up状态。第一个变量标识接口。 |
SNMP_GENERICTRAP_AUTHFAILURE | SNMP实体发送了SNMP消息,但是虚假声称属于已知社区。 |
SNMP_GENERICTRAP_EGPNEIGHLOSS | EGP对等体已更改为下状态。第一个变量标识EGP对等体的IP地址。 |
SNMP_GENERICTRAP_ENTERSPECIFIC | 发出【专用陷阱】参数中标识的异常事件。 |
【specificTrap】
[out]指出生成的特定陷阱的指示。
【的timeStamp】
[out]指向要接收时间戳的变量。
【variableBindings】
[out]指向变量绑定列表。列表的内存将由扩展代理分配。可扩展代理将通过调用SnmpUtilVarBindListFree函数来释放内存。
返回值
如果SnmpExtensionTrap函数在其参数中返回一个陷阱,则返回值为TRUE。否则,可扩展代理重复调用该函数,直到返回值为FALSE。
备注
一旦将SnmpExtensionInit功能的【hPollForTrapEvent】事件句柄设置为信号状态,可扩展代理就会反复调用SnmpExtensionTrap函数。每个成功的呼叫都会从单个陷阱返回数据。它返回FALSE,表示其参数不表示有效的陷阱数据,并停止可扩展代理的重复调用。
扩展代理不得释放【variableBindings】参数的内存。可扩展代理自动执行此操作。使用SnmpUtilMemAlloc功能为每个RFC1157VarBind结构分配内存。
重要的是要注意,早期的文档指出,扩展代理应该为企业对象标识符动态分配内存,因为可扩展代理将在发送陷阱后尝试释放内存。可扩展代理不会释放与企业对象标识符相关联的内存。建议您返回指向静态AsnObjectIdentifier结构的指针。
也可以看看
SetEvent, SnmpUtilMemAlloc, SnmpUtilVarBindListFree, RFC1157VarBindList, SnmpExtensionInit