Changeset 21916 for trunk/src/msacm32/initterm.cpp
- Timestamp:
- Dec 18, 2011, 10:28:22 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:ignore
-
old new 1 bin 2 Makefile.inc 1 env.cmd 2 LocalConfig.kmk
-
-
Property svn:mergeinfo
set to
/branches/gcc-kmk merged eligible
- Property svn:ignore
-
trunk/src/msacm32/initterm.cpp
r6712 r21916 1 1 /* 2 * DLLentry point2 * MSACM32 entry point 3 3 * 4 4 * Copyright 1998 Sander van Leeuwen 5 5 * Copyright 1998 Peter Fitzsimmons 6 6 * 7 *8 7 * Project Odin Software License can be found in LICENSE.TXT 9 *10 8 */ 11 9 12 /*-------------------------------------------------------------*/13 /* INITERM.C -- Source for a custom dynamic link library */14 /* initialization and termination (_DLL_InitTerm) */15 /* function. */16 /* */17 /* When called to perform initialization, this sample function */18 /* gets storage for an array of integers, and initializes its */19 /* elements with random integers. At termination time, it */20 /* frees the array. Substitute your own special processing. */21 /*-------------------------------------------------------------*/22 23 24 /* Include files */25 10 #define INCL_DOSMODULEMGR 26 11 #define INCL_DOSPROCESS … … 36 21 #include <initdll.h> 37 22 38 extern "C" { 39 //Win32 resource table (produced by wrc) 40 extern DWORD _Resource_PEResTab; 41 } 23 // Win32 resource table (produced by wrc) 24 extern DWORD msacm32_PEResTab; 25 42 26 static HMODULE dllHandle = 0; 43 27 44 28 BOOL WINAPI MSACM32_LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved); 45 29 46 //******************************************************************************47 //******************************************************************************48 30 BOOL WINAPI LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad) 49 31 { 50 switch (fdwReason)51 {52 case DLL_PROCESS_ATTACH:53 case DLL_THREAD_ATTACH:54 case DLL_THREAD_DETACH:55 32 switch (fdwReason) 33 { 34 case DLL_PROCESS_ATTACH: 35 case DLL_THREAD_ATTACH: 36 case DLL_THREAD_DETACH: 37 return MSACM32_LibMain(hinstDLL, fdwReason, fImpLoad); 56 38 57 case DLL_PROCESS_DETACH: 58 MSACM32_LibMain(hinstDLL, fdwReason, fImpLoad); 59 ctordtorTerm(); 60 return TRUE; 61 } 62 return FALSE; 39 case DLL_PROCESS_DETACH: 40 MSACM32_LibMain(hinstDLL, fdwReason, fImpLoad); 41 #ifdef __IBMC__ 42 ctordtorTerm(); 43 #endif 44 return TRUE; 45 } 46 return FALSE; 63 47 } 64 /****************************************************************************/ 65 /* _DLL_InitTerm is the function that gets called by the operating system */ 66 /* loader when it loads and frees this DLL for each process that accesses */ 67 /* this DLL. However, it only gets called the first time the DLL is loaded */ 68 /* and the last time it is freed for a particular process. The system */ 69 /* linkage convention MUST be used because the operating system loader is */ 70 /* calling this function. */ 71 /****************************************************************************/ 72 unsigned long SYSTEM _DLL_InitTerm(unsigned long hModule, unsigned long 73 ulFlag) 48 49 ULONG SYSTEM DLL_InitMSAcm32(ULONG hModule) 74 50 { 75 size_t i; 76 APIRET rc; 51 CheckVersionFromHMOD(PE2LX_VERSION, hModule); /*PLF Wed 98-03-18 05:28:48*/ 77 52 78 /*-------------------------------------------------------------------------*/ 79 /* If ulFlag is zero then the DLL is being loaded so initialization should */ 80 /* be performed. If ulFlag is 1 then the DLL is being freed so */ 81 /* termination should be performed. */ 82 /*-------------------------------------------------------------------------*/ 53 dllHandle = RegisterLxDll(hModule, LibMain, (PVOID)&msacm32_PEResTab); 54 if(dllHandle == 0) 55 return -1; 83 56 84 switch (ulFlag) { 85 case 0 : 86 ctordtorInit(); 57 return 0; 58 } 87 59 88 CheckVersionFromHMOD(PE2LX_VERSION, hModule); /*PLF Wed 98-03-18 05:28:48*/ 60 void SYSTEM DLL_TermMSAcm32(ULONG hModule) 61 { 62 if (dllHandle) 63 UnregisterLxDll(dllHandle); 64 } 89 65 90 dllHandle = RegisterLxDll(hModule, LibMain, (PVOID)&_Resource_PEResTab); 91 if(dllHandle == 0) 92 return 0UL; 66 ULONG SYSTEM DLL_Init(ULONG hModule) 67 { 68 if (DLL_InitDefault(hModule) == -1) 69 return -1; 70 return DLL_InitMSAcm32(hModule); 71 } 93 72 94 break; 95 case 1 : 96 if(dllHandle) { 97 UnregisterLxDll(dllHandle); 98 } 99 break; 100 101 default : 102 return 0UL; 103 } 104 105 /***********************************************************/ 106 /* A non-zero value must be returned to indicate success. */ 107 /***********************************************************/ 108 return 1UL; 73 void SYSTEM DLL_Term(ULONG hModule) 74 { 75 DLL_TermMSAcm32(hModule); 76 DLL_TermDefault(hModule); 109 77 } 110 //******************************************************************************111 //******************************************************************************
Note:
See TracChangeset
for help on using the changeset viewer.