Changeset 21900 for branches/gcc-kmk/src/wnaspi32/initterm.cpp
- Timestamp:
 - Dec 15, 2011, 6:07:42 PM (14 years ago)
 - File:
 - 
      
- 1 moved
 
- 
          
  branches/gcc-kmk/src/wnaspi32/initterm.cpp (moved) (moved from branches/gcc-kmk/src/wnaspi32/initwnaspi32.cpp ) (2 diffs)
 
 
Legend:
- Unmodified
 - Added
 - Removed
 
- 
      
branches/gcc-kmk/src/wnaspi32/initterm.cpp
r21842 r21900 1 /* $Id: init wnaspi32.cpp,v 1.7 2002-06-08 11:42:02sandervl Exp $1 /* $Id: initterm.cpp,v 1.8 2001-10-15 17:06:18 sandervl Exp $ 2 2 * 3 * DLL entry point3 * WNASPI322 DLL entry point 4 4 * 5 5 * Copyright 1998 Sander van Leeuwen 6 6 * Copyright 1998 Peter Fitzsimmons 7 7 * 8 *9 8 * Project Odin Software License can be found in LICENSE.TXT 10 *11 9 */ 12 10 13 /*-------------------------------------------------------------*/14 /* INITERM.C -- Source for a custom dynamic link library */15 /* initialization and termination (_DLL_InitTerm) */16 /* function. */17 /* */18 /* When called to perform initialization, this sample function */19 /* gets storage for an array of integers, and initializes its */20 /* elements with random integers. At termination time, it */21 /* frees the array. Substitute your own special processing. */22 /*-------------------------------------------------------------*/23 24 25 /* Include files */26 11 #define INCL_DOSMODULEMGR 27 12 #define INCL_DOSPROCESS … … 40 25 #include "cdio.h" 41 26 42 extern "C" { 43 //Win32 resource table (produced by wrc) 44 extern DWORD wnaspi32_PEResTab; 45 } 27 // Win32 resource table (produced by wrc) 28 extern DWORD wnaspi32_PEResTab; 29 46 30 static HMODULE dllHandle = 0; 31 47 32 BOOL fASPIAvailable = TRUE; 48 33 49 //******************************************************************************50 //******************************************************************************51 34 void WIN32API DisableASPI() 52 35 { 53 dprintf(("DisableASPI"));54 fASPIAvailable = FALSE;36 dprintf(("DisableASPI")); 37 fASPIAvailable = FALSE; 55 38 } 56 //****************************************************************************** 57 //****************************************************************************** 39 58 40 BOOL WINAPI Wnaspi32LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad) 59 41 { 60 switch (fdwReason)61 {62 case DLL_PROCESS_ATTACH:63 {64 if(fASPIAvailable == FALSE) return TRUE;42 switch (fdwReason) 43 { 44 case DLL_PROCESS_ATTACH: 45 { 46 if(fASPIAvailable == FALSE) return TRUE; 65 47 66 if(OSLibCdIoInitialize() == FALSE) { 67 dprintf(("WNASPI32: LibMain; can't allocate aspi object! APIs will not work!")); 68 // @@@AH 20011020 we shouldn't prevent DLL loading in this case 69 // just make sure that all API calls fail 70 return TRUE; 71 } 72 fASPIAvailable = TRUE; 73 dprintf(("WNASPI32: LibMain; os2cdrom.dmd ASPI interface available")); 74 return TRUE; 75 } 48 if(OSLibCdIoInitialize() == FALSE) 49 { 50 dprintf(("WNASPI32: LibMain; can't allocate aspi object! APIs will not work!")); 51 // @@@AH 20011020 we shouldn't prevent DLL loading in this case 52 // just make sure that all API calls fail 53 return TRUE; 54 } 55 fASPIAvailable = TRUE; 56 dprintf(("WNASPI32: LibMain; os2cdrom.dmd ASPI interface available")); 57 return TRUE; 58 } 76 59 77 case DLL_THREAD_ATTACH:78 case DLL_THREAD_DETACH:79 return TRUE;60 case DLL_THREAD_ATTACH: 61 case DLL_THREAD_DETACH: 62 return TRUE; 80 63 81 case DLL_PROCESS_DETACH:82 OSLibCdIoTerminate();83 return TRUE;84 }85 return FALSE;64 case DLL_PROCESS_DETACH: 65 OSLibCdIoTerminate(); 66 return TRUE; 67 } 68 return FALSE; 86 69 } 87 /****************************************************************************/ 88 /* _DLL_InitTerm is the function that gets called by the operating system */ 89 /* loader when it loads and frees this DLL for each process that accesses */ 90 /* this DLL. However, it only gets called the first time the DLL is loaded */ 91 /* and the last time it is freed for a particular process. The system */ 92 /* linkage convention MUST be used because the operating system loader is */ 93 /* calling this function. */ 94 /****************************************************************************/ 95 ULONG APIENTRY inittermWnaspi32(ULONG hModule, ULONG ulFlag) 70 71 ULONG SYSTEM DLL_InitWinAspi32(ULONG hModule) 96 72 { 97 size_t i; 98 APIRET rc; 73 CheckVersionFromHMOD(PE2LX_VERSION, hModule); /*PLF Wed 98-03-18 05:28:48*/ 99 74 100 /*-------------------------------------------------------------------------*/ 101 /* If ulFlag is zero then the DLL is being loaded so initialization should */ 102 /* be performed. If ulFlag is 1 then the DLL is being freed so */ 103 /* termination should be performed. */ 104 /*-------------------------------------------------------------------------*/ 75 dllHandle = RegisterLxDll(hModule, Wnaspi32LibMain, (PVOID)&wnaspi32_PEResTab); 76 if (dllHandle == 0) 77 return -1; 105 78 106 switch (ulFlag) { 107 case 0 : 108 dllHandle = RegisterLxDll(hModule, Wnaspi32LibMain, (PVOID)&wnaspi32_PEResTab); 109 if(dllHandle == 0) 110 return 0UL; 79 return 0; 80 } 111 81 112 break; 113 case 1 : 114 if(dllHandle) { 115 UnregisterLxDll(dllHandle); 116 } 117 break; 118 default : 119 return 0UL; 120 } 82 void SYSTEM DLL_TermWinAspi32(ULONG hModule) 83 { 84 if (dllHandle) 85 UnregisterLxDll(dllHandle); 86 } 121 87 122 /***********************************************************/ 123 /* A non-zero value must be returned to indicate success. */ 124 /***********************************************************/ 125 return 1UL; 88 ULONG SYSTEM DLL_Init(ULONG hModule) 89 { 90 if (DLL_InitDefault(hModule) == -1) 91 return -1; 92 return DLL_InitWinAspi32(hModule); 126 93 } 127 //****************************************************************************** 128 //****************************************************************************** 94 95 void SYSTEM DLL_Term(ULONG hModule) 96 { 97 DLL_TermWinAspi32(hModule); 98 DLL_TermDefault(hModule); 99 }  
  Note:
 See   TracChangeset
 for help on using the changeset viewer.
  