我目前有一个使用snmp4j构建的代理,它实现了一些自定义mib。我想要做的是在windows下运行这个snmp4j代理作为windows snmp服务的snmp扩展代理。原因是我需要这个新的snmp4j代理来处理来自我的自定义mib和windows snmp服务的信息的snmp请求来处理mib2信息的请求。如果有任何人有使用Windows snmp扩展代理和snmp4j的经验,并且可以给我一些如何实现这一点的提示,或者甚至可以使用snmp4j,我将非常感激。感谢
答案 0 :(得分:1)
Microsoft已将SNMP代理设计为服务。该服务执行协议级别的所有脏工作(ASN.1 / BER编码和解码)。为了开发扩展代理,我们必须在Windows SNMP服务之上实现扩展代理DLL 。
要创建扩展代理,您需要创建一个Win32 DLL,在此DLL中,您需要定义,实现和导出以下函数:
BOOL SNMP_FUNC_TYPE SnmpExtensionInit(DWORD dwUptimeReference,
HANDLE *phSubagentTrapEvent,
AsnObjectIdentifier *pFirstSupportedRegion)
BOOL SNMP_FUNC_TYPE SnmpExtensionQuery(BYTE bPduType,
SnmpVarBindList *pVarBindList,
AsnInteger32 *pErrorStatus,
AsnInteger32 *pErrorIndex)
// trap handler
BOOL SNMP_FUNC_TYPE SnmpExtensionTrap(AsnObjectIdentifier *pEnterpriseOid,
AsnInteger32 *pGenericTrapId,
AsnInteger32 *pSpecificTrapId,
AsnTimeticks *pTimeStamp,
SnmpVarBindList *pVarBindList)
不幸的是,您无法使用SNMP4J库实现MS SNMP代理扩展。