Changeset 21891 for branches/gcc-kmk/src/mscms/initterm.cpp
- Timestamp:
- Dec 15, 2011, 12:50:15 PM (14 years ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
branches/gcc-kmk/src/mscms/initterm.cpp
r21842 r21891 1 /* $Id: init gdi32.cpp,v 1.16 2004/01/11 11:42:17 sandervlExp $1 /* $Id: initterm.cpp,v 1.17 2001/09/05 10:26:30 bird Exp $ 2 2 * 3 * DLL entry point3 * MSCMS 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 <initdll.h> 39 24 40 extern "C" { 41 //Win32 resource table (produced by wrc) 42 //extern DWORD mscms_PEResTab; 43 BOOL WINAPI mscmsDllMain(HINSTANCE hInst, DWORD fdwReason, PVOID pvReserved); 44 } 25 //#define DBG_LOCALLOG DBG_initterm 26 //#include "dbglocal.h" 27 28 // Win32 resource table (produced by wrc) 29 //extern DWORD mscms_PEResTab; 45 30 46 31 static HMODULE dllHandle = 0; 47 32 33 BOOL WINAPI mscmsDllMain(HINSTANCE hInst, DWORD fdwReason, PVOID pvReserved); 34 48 35 static BOOL WINAPI OdinLibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad) 49 36 { 50 BOOL ret;37 BOOL ret; 51 38 52 switch (fdwReason)53 {54 case DLL_PROCESS_ATTACH:55 return mscmsDllMain(hinstDLL, fdwReason, fImpLoad);39 switch (fdwReason) 40 { 41 case DLL_PROCESS_ATTACH: 42 return mscmsDllMain(hinstDLL, fdwReason, fImpLoad); 56 43 57 case DLL_THREAD_ATTACH:58 case DLL_THREAD_DETACH:59 return mscmsDllMain(hinstDLL, fdwReason, fImpLoad);44 case DLL_THREAD_ATTACH: 45 case DLL_THREAD_DETACH: 46 return mscmsDllMain(hinstDLL, fdwReason, fImpLoad); 60 47 61 case DLL_PROCESS_DETACH:62 ret = mscmsDllMain(hinstDLL, fdwReason, fImpLoad);63 return ret;64 }65 return FALSE;48 case DLL_PROCESS_DETACH: 49 ret = mscmsDllMain(hinstDLL, fdwReason, fImpLoad); 50 return ret; 51 } 52 return FALSE; 66 53 } 67 54 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 ULONG APIENTRY inittermmscms(ULONG hModule, ULONG ulFlag) 55 ULONG SYSTEM DLL_InitMSCms(ULONG hModule) 77 56 { 78 size_t i;79 APIRET rc;57 if (!InitializeKernel32()) 58 return 0; 80 59 81 /*-------------------------------------------------------------------------*/ 82 /* If ulFlag is zero then the DLL is being loaded so initialization should */ 83 /* be performed. If ulFlag is 1 then the DLL is being freed so */ 84 /* termination should be performed. */ 85 /*-------------------------------------------------------------------------*/ 60 //CheckVersionFromHMOD(PE2LX_VERSION, hModule); /*PLF Wed 98-03-18 05:28:48*/ 86 61 87 switch (ulFlag) { 88 case 0 : 62 dllHandle = RegisterLxDll(hModule, OdinLibMain, NULL); 63 if(dllHandle == 0) 64 return -1; 89 65 90 if (!InitializeKernel32()) 91 return 0; 66 dprintf(("mscms init %s %s (%x)", __DATE__, __TIME__, DLL_InitMSCms)); 92 67 93 //CheckVersionFromHMOD(PE2LX_VERSION, hModule); /*PLF Wed 98-03-18 05:28:48*/ 94 dllHandle = RegisterLxDll(hModule, OdinLibMain, NULL); 95 if(dllHandle == 0) 96 return 0UL; 68 return 0; 69 } 97 70 98 dprintf(("mscms init %s %s (%x)", __DATE__, __TIME__, inittermmscms)); 71 void SYSTEM DLL_TermMSCms(ULONG hModule) 72 { 73 if (dllHandle) 74 UnregisterLxDll(dllHandle); 75 } 99 76 100 break; 101 case 1 : 102 if(dllHandle) { 103 UnregisterLxDll(dllHandle); 104 } 105 break; 106 default : 107 return 0UL; 108 } 77 ULONG SYSTEM DLL_Init(ULONG hModule) 78 { 79 if (DLL_InitDefault(hModule) == -1) 80 return -1; 81 return DLL_InitMSCms(hModule); 82 } 109 83 110 /***********************************************************/ 111 /* A non-zero value must be returned to indicate success. */ 112 /***********************************************************/113 return 1UL;84 void SYSTEM DLL_Term(ULONG hModule) 85 { 86 DLL_TermMSCms(hModule); 87 DLL_TermDefault(hModule); 114 88 } 115 //******************************************************************************116 //******************************************************************************
Note:
See TracChangeset
for help on using the changeset viewer.