【发布时间】:2011-06-09 02:50:56
【问题描述】:
我有一些问题:
在我的系统(例如 windows)中,有许多 DLL 扩展代理附加了 snmp 服务
当一个请求到达服务 snmp "Snmp.exe" 时,它会将请求发送给所有代理还是只发送一个?
我怎么知道他们中的哪一个可以回答请求?
谢谢
【问题讨论】:
标签: snmp
我有一些问题:
在我的系统(例如 windows)中,有许多 DLL 扩展代理附加了 snmp 服务
当一个请求到达服务 snmp "Snmp.exe" 时,它会将请求发送给所有代理还是只发送一个?
我怎么知道他们中的哪一个可以回答请求?
谢谢
【问题讨论】:
标签: snmp
主要代理的工作是处理 SNMP 注册,每个 DLL 将注册它能够提供的信息。 SNMP 中的信息注册在由 OID 表示的树结构下。代理足够聪明,可以根据询问的传入 OID 知道哪个 DLL(或子代理)能够提供请求。
您可以考虑阅读描述“AgentX”协议的RFC2741。虽然这里讨论的是协议而不是 DLL,但它在底层工作的基本方式应该非常相似。
【讨论】:
@Wes 响应正常。这里只是一个补充。如“How to add an SNMP extension agent to the NT registry”中所述,您可以在以下项指向的注册表项中找到 DLL 扩展:
Windows Server NT4 到 Windows Server 2003 R2(工作站、W2K、XP):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameter\ExtensionAgents
开始使用 Windows 2008 (Vista):
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SNMP\Parameters\ExtensionAgents
每个 DLL 都公开 SnmpExtensionInit 函数,该函数将supportedView 报告为OID。
BOOL WINAPI SnmpExtensionInit (DWORD dwTimeZeroReference,
HANDLE *hPollForTrapEvent,
AsnObjectIdentifier *supportedView);
我编写了一个包装程序,它只是加载 DLL 并调用函数来报告响应,如果你愿意,可以下载并尝试slxSNMPInfo。抱歉,网站是法语,但 EXE 文件中的字符串是英语。
【讨论】: