Changeset 21916 for trunk/src/wing32/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/wing32/initterm.cpp
r6640 r21916 1 1 /* $Id: initterm.cpp,v 1.6 2001-09-05 10:32:33 bird Exp $ 2 2 * 3 * DLL entry point3 * WING32 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 … … 38 23 #include "wing32impl.h" 39 24 40 extern "C" { 41 //Win32 resource table (produced by wrc) 42 extern DWORD _Resource_PEResTab; 43 } 25 // Win32 resource table (produced by wrc) 26 extern DWORD wing32_PEResTab; 27 44 28 static HMODULE dllHandle = 0; 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:32 switch (fdwReason) 33 { 34 case DLL_PROCESS_ATTACH: 53 35 if(!InitWing32()) 54 36 return FALSE; 55 37 56 return TRUE;38 return TRUE; 57 39 58 case DLL_THREAD_ATTACH:59 case DLL_THREAD_DETACH:60 return TRUE;40 case DLL_THREAD_ATTACH: 41 case DLL_THREAD_DETACH: 42 return TRUE; 61 43 62 case DLL_PROCESS_DETACH: 63 ctordtorTerm(); 64 return TRUE; 65 } 66 return FALSE; 44 case DLL_PROCESS_DETACH: 45 #ifdef __IBMC__ 46 ctordtorTerm(); 47 #endif 48 return TRUE; 49 } 50 return FALSE; 67 51 } 68 /****************************************************************************/ 69 /* _DLL_InitTerm is the function that gets called by the operating system */ 70 /* loader when it loads and frees this DLL for each process that accesses */ 71 /* this DLL. However, it only gets called the first time the DLL is loaded */ 72 /* and the last time it is freed for a particular process. The system */ 73 /* linkage convention MUST be used because the operating system loader is */ 74 /* calling this function. */ 75 /****************************************************************************/ 76 unsigned long SYSTEM _DLL_InitTerm(unsigned long hModule, unsigned long 77 ulFlag) 52 53 ULONG SYSTEM DLL_InitWing32(ULONG hModule) 78 54 { 79 size_t i; 80 APIRET rc; 55 CheckVersionFromHMOD(PE2LX_VERSION, hModule); /*PLF Wed 98-03-18 05:28:48*/ 81 56 82 /*-------------------------------------------------------------------------*/ 83 /* If ulFlag is zero then the DLL is being loaded so initialization should */ 84 /* be performed. If ulFlag is 1 then the DLL is being freed so */ 85 /* termination should be performed. */ 86 /*-------------------------------------------------------------------------*/ 57 dllHandle = RegisterLxDll(hModule, LibMain, (PVOID)&wing32_PEResTab); 58 if (dllHandle == 0) 59 return -1; 87 60 88 switch (ulFlag) 89 { 90 case 0 : 91 { 92 ctordtorInit(); 61 return 0; 62 } 93 63 94 CheckVersionFromHMOD(PE2LX_VERSION, hModule); /*PLF Wed 98-03-18 05:28:48*/ 64 void SYSTEM DLL_TermWing32(ULONG hModule) 65 { 66 if (dllHandle) 67 UnregisterLxDll(dllHandle); 68 } 95 69 96 dllHandle = RegisterLxDll(hModule, LibMain, (PVOID)&_Resource_PEResTab); 97 if(dllHandle == 0) 98 return 0UL; 70 ULONG SYSTEM DLL_Init(ULONG hModule) 71 { 72 if (DLL_InitDefault(hModule) == -1) 73 return -1; 74 return DLL_InitWing32(hModule); 75 } 99 76 100 break; 101 } 102 case 1 : 103 if(dllHandle) { 104 UnregisterLxDll(dllHandle); 105 } 106 break; 107 default : 108 return 0UL; 109 } 110 111 /***********************************************************/ 112 /* A non-zero value must be returned to indicate success. */ 113 /***********************************************************/ 114 return 1UL; 77 void SYSTEM DLL_Term(ULONG hModule) 78 { 79 DLL_TermWing32(hModule); 80 DLL_TermDefault(hModule); 115 81 }
Note:
See TracChangeset
for help on using the changeset viewer.