SnmpExtensionInit не вызывается - PullRequest
0 голосов
/ 16 июня 2011

Я пытаюсь добавить расширение к агенту SNMP Windows и следую доступной схематичной документации.DLL была построена, и две записи были помещены в реестр.Перезапуск службы SNMP, похоже, загружает DLL.DllMain вызывается по следующим причинам: DLL_PROCESS_DETACH, DLL_PROCESS_ATTACH, DLL_THREAD_ATTACH, DLL_PROCESS_DETACH.Но SnmpExtensionInit никогда не вызывается.Есть идеи?ТИА.

1 Ответ

2 голосов
/ 16 июня 2011

Можете ли вы дать декларацию вашего SnmpExtensionInit.К сожалению, это по-французски, но попробуйте свою DLL с помощью инструмента slxSNMPInfo .Этот инструмент просто загружает вашу DLL и пытается вызвать SnmpExtensionInit.


Отредактировано (после вашего комментария)

"Err SNMP DLL not detected !" в slwSNMPInfo.exe , что подтверждаетВаша DLL не экспортирует функцию «SnmpExtensionInit».Вы также можете проверить это с помощью Dependency Walker tool .

Чтобы правильно экспортировать свои функции в Windows DLL, вы можете использовать файл определения ( a .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);
...