我正在尝试向 Windows SNMP 代理添加扩展,并遵循了可用的粗略文档。dll 已构建,两个条目已放入注册表。重新启动 SNMP 服务似乎加载了 DLL。调用 DllMain 的原因如下:DLL_PROCESS_DETACH、DLL_PROCESS_ATTACH、DLL_THREAD_ATTACH、DLL_PROCESS_DETACH。但是 SnmpExtensionInit 似乎从未被调用过。有任何想法吗?TIA。
问问题
524 次
1 回答
2
你能给出你的声明吗SnmpExtensionInit
?抱歉,它是法语,但请使用slxSNMPInfo工具尝试您的 DLL。该工具只是加载您的 DLL 并尝试调用SnmpExtensionInit
.
已编辑(在您发表评论后)
"Err SNMP DLL not detected !"
在slwSNMPInfo.exe中证明您的 DLL 没有导出“SnmpExtensionInit”函数。您还可以使用Dependency Walker 工具验证这一点。
要在 Windows DLL 中正确导出函数,您可以使用如下定义文件(.def 文件):
LIBRARY YOUR-DLL-NAME
DESCRIPTION 'SNMP Extension Agent for Windows NT.'
SEGMENTS
_TEXT PRELOAD
INIT_TEXT PRELOAD
HEAPSIZE 1024
EXPORTS
SnmpExtensionInit
SnmpExtensionTrap
SnmpExtensionQuery
或者您可以更改您的功能声明(所有三个)
__declspec(dllexport) BOOL SnmpExtensionInit (DWORD dwTimeZeroReference,
HANDLE *hPollForTrapEvent,
AsnObjectIdentifier *supportedView);
于 2011-06-16T19:49:31.337 回答