0

我正在尝试向 Windows SNMP 代理添加扩展,并遵循了可用的粗略文档。dll 已构建,两个条目已放入注册表。重新启动 SNMP 服务似乎加载了 DLL。调用 DllMain 的原因如下:DLL_PROCESS_DETACH、DLL_PROCESS_ATTACH、DLL_THREAD_ATTACH、DLL_PROCESS_DETACH。但是 SnmpExtensionInit 似乎从未被调用过。有任何想法吗?TIA。

4

1 回答 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 回答