我正在尝试为Windows SNMP代理添加扩展,并遵循可用的粗略文档。已构建dll,并且已将两个条目放入注册表中。重新启动SNMP服务似乎加载DLL。调用DllMain的原因如下:DLL_PROCESS_DETACH,DLL_PROCESS_ATTACH,DLL_THREAD_ATTACH,DLL_PROCESS_DETACH。但SnmpExtensionInit似乎永远不会被调用。有任何想法吗? TIA。
答案 0 :(得分:2)
您能否发表SnmpExtensionInit
的声明。抱歉,这是法语,但请使用slxSNMPInfo工具尝试您的DLL。此工具只是加载您的DLL并尝试调用SnmpExtensionInit
。
编辑(在您的评论之后)
slwSNMPInfo.exe中的 "Err SNMP DLL not detected !"
证明您的DLL不会导出“SnmpExtensionInit”函数。您也可以使用Dependency Walker tool验证这一点。
要在Windows DLL中正确导出您的功能,您可以使用定义文件(a .def file),如下所示:
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);