95 lines
2.1 KiB
C++
95 lines
2.1 KiB
C++
//***************************************************************************
|
|
|
|
//
|
|
|
|
// File:
|
|
|
|
//
|
|
|
|
// Module: MS SNMP Provider
|
|
|
|
//
|
|
|
|
// Purpose:
|
|
|
|
//
|
|
|
|
// Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved
|
|
//
|
|
//***************************************************************************
|
|
|
|
#include "precomp.h"
|
|
#include <provexpt.h>
|
|
#include <snmptempl.h>
|
|
#include <snmpmt.h>
|
|
#include <process.h>
|
|
#include <objbase.h>
|
|
#include <snmpcont.h>
|
|
#include "snmpevt.h"
|
|
#include "snmpthrd.h"
|
|
#include "snmplog.h"
|
|
|
|
extern CRITICAL_SECTION g_SnmpDebugLogMapCriticalSection ;
|
|
|
|
|
|
//***************************************************************************
|
|
//
|
|
// LibMain32
|
|
//
|
|
// Purpose: Entry point for DLL. Good place for initialization.
|
|
// Return: TRUE if OK.
|
|
//***************************************************************************
|
|
|
|
BOOL APIENTRY DllMain (
|
|
|
|
HINSTANCE hInstance,
|
|
ULONG ulReason ,
|
|
LPVOID pvReserved
|
|
)
|
|
{
|
|
BOOL status = TRUE ;
|
|
SetStructuredExceptionHandler seh;
|
|
|
|
try
|
|
{
|
|
if ( DLL_PROCESS_DETACH == ulReason )
|
|
{
|
|
SnmpThreadObject :: ProcessDetach ( TRUE ) ;
|
|
DeleteCriticalSection ( &SnmpDebugLog :: s_CriticalSection ) ;
|
|
DeleteCriticalSection ( &g_SnmpDebugLogMapCriticalSection ) ;
|
|
status = TRUE ;
|
|
}
|
|
else if ( DLL_PROCESS_ATTACH == ulReason )
|
|
{
|
|
InitializeCriticalSection ( &SnmpDebugLog :: s_CriticalSection ) ;
|
|
InitializeCriticalSection ( &g_SnmpDebugLogMapCriticalSection ) ;
|
|
SnmpThreadObject :: ProcessAttach () ;
|
|
status = TRUE ;
|
|
DisableThreadLibraryCalls(hInstance); // 158024
|
|
}
|
|
else if ( DLL_THREAD_DETACH == ulReason )
|
|
{
|
|
status = TRUE ;
|
|
}
|
|
else if ( DLL_THREAD_ATTACH == ulReason )
|
|
{
|
|
status = TRUE ;
|
|
}
|
|
}
|
|
catch(Structured_Exception e_SE)
|
|
{
|
|
status = FALSE;
|
|
}
|
|
catch(Heap_Exception e_HE)
|
|
{
|
|
status = FALSE;
|
|
}
|
|
catch(...)
|
|
{
|
|
status = FALSE;
|
|
}
|
|
|
|
return status ;
|
|
}
|
|
|