133 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			3.6 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;
 | |
| 
 | |
|          // Initialize the library
 | |
|          if (InitializeLibrary() != 0)
 | |
|          {
 | |
|             // Failed to initialize the library
 | |
|             OutputDebugString("CASA_PW_MECH -DllMain- Library initialization failed\n");
 | |
|             retStatus = FALSE;
 | |
|          }
 | |
|          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);
 | |
| }
 | |
| 
 | |
| //=========================================================================
 | |
| //=========================================================================
 | |
| 
 |