127 lines
3.4 KiB
C
127 lines
3.4 KiB
C
/***********************************************************************
|
|
*
|
|
* Copyright (C) 2006 Novell, Inc. All Rights Reserved.
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; version 2.1
|
|
* of the License.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Library Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, Novell, Inc.
|
|
*
|
|
* To contact Novell about this file by physical or electronic mail,
|
|
* you may find current contact information at www.novell.com.
|
|
*
|
|
* Author: Juan Carlos Luciani <jluciani@novell.com>
|
|
*
|
|
***********************************************************************/
|
|
|
|
//===[ Include files ]=====================================================
|
|
|
|
#include "internal.h"
|
|
|
|
//===[ External data ]=====================================================
|
|
|
|
//===[ Manifest constants ]================================================
|
|
|
|
//===[ Type definitions ]==================================================
|
|
|
|
//===[ Function prototypes ]===============================================
|
|
|
|
//===[ Global variables ]==================================================
|
|
|
|
UINT32 g_ulCount = 0;
|
|
UINT32 g_ulLock = 0;
|
|
HANDLE g_hModule;
|
|
|
|
|
|
//++=======================================================================
|
|
BOOL APIENTRY DllMain(
|
|
HANDLE hModule,
|
|
DWORD ul_reason_for_call,
|
|
LPVOID lpReserved
|
|
)
|
|
//=======================================================================--
|
|
{
|
|
BOOL retStatus = TRUE;
|
|
|
|
switch (ul_reason_for_call)
|
|
{
|
|
case DLL_PROCESS_ATTACH:
|
|
{
|
|
g_hModule = hModule;
|
|
|
|
// Nothing else to do at this time
|
|
break;
|
|
}
|
|
|
|
case DLL_THREAD_ATTACH:
|
|
{
|
|
g_hModule = hModule;
|
|
break;
|
|
}
|
|
|
|
case DLL_THREAD_DETACH:
|
|
break;
|
|
|
|
case DLL_PROCESS_DETACH:
|
|
{
|
|
/* Don't uninitialize on windows
|
|
tbd
|
|
*/
|
|
break;
|
|
}
|
|
}
|
|
|
|
return retStatus;
|
|
}
|
|
|
|
//++=======================================================================
|
|
//
|
|
// DllCanUnloadNow
|
|
//
|
|
// Synopsis
|
|
//
|
|
//
|
|
STDAPI
|
|
DllCanUnloadNow()
|
|
//
|
|
// Input Arguments
|
|
//
|
|
// Ouput Arguments
|
|
//
|
|
// Return Value
|
|
// S_OK The DLL can be unloaded.
|
|
// S_FALSE The DLL cannot be unloaded now.
|
|
//
|
|
// Description
|
|
// An Exported Function.
|
|
// DLLs that support the OLE Component Object Model (COM) should implement
|
|
// and export DllCanUnloadNow.
|
|
// A call to DllCanUnloadNow determines whether the DLL from which it is
|
|
// exported is still in use. A DLL is no longer in use when it is not
|
|
// managing any existing objects (the reference count on all of its objects
|
|
// is 0).
|
|
// DllCanUnloadNow returns S_FALSE if there are any existing references to
|
|
// objects that the DLL manages.
|
|
//
|
|
// Environment
|
|
//
|
|
// See Also
|
|
//
|
|
//=======================================================================--
|
|
{
|
|
// tbd
|
|
return ((g_ulCount == 0 && g_ulLock == 0) ? S_OK : S_FALSE);
|
|
}
|
|
|
|
//=========================================================================
|
|
//=========================================================================
|
|
|