Changeset 21860 for branches/gcc-kmk/src/shell32/initterm.cpp
- Timestamp:
- Dec 7, 2011, 7:50:11 PM (14 years ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
branches/gcc-kmk/src/shell32/initterm.cpp
r21842 r21860 1 1 /* 2 * DLL entry point2 * SHELL32 DLL 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 shell32_PEResTab; 41 } 23 // Win32 resource table (produced by wrc) 24 extern DWORD shell32_PEResTab; 25 42 26 static HMODULE dllHandle = 0; 43 27 44 28 BOOL WINAPI Shell32LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad); 45 29 46 //******************************************************************************47 //******************************************************************************48 30 BOOL WINAPI OdinLibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad) 49 31 { 50 BOOL ret;32 BOOL ret; 51 33 52 switch (fdwReason)53 {54 case DLL_PROCESS_ATTACH:55 case DLL_THREAD_ATTACH:56 case DLL_THREAD_DETACH:57 34 switch (fdwReason) 35 { 36 case DLL_PROCESS_ATTACH: 37 case DLL_THREAD_ATTACH: 38 case DLL_THREAD_DETACH: 39 return Shell32LibMain(hinstDLL, fdwReason, fImpLoad); 58 40 59 case DLL_PROCESS_DETACH:60 61 62 }63 return FALSE;41 case DLL_PROCESS_DETACH: 42 ret = Shell32LibMain(hinstDLL, fdwReason, fImpLoad); 43 return ret; 44 } 45 return FALSE; 64 46 } 65 /****************************************************************************/ 66 /* _DLL_InitTerm is the function that gets called by the operating system */ 67 /* loader when it loads and frees this DLL for each process that accesses */ 68 /* this DLL. However, it only gets called the first time the DLL is loaded */ 69 /* and the last time it is freed for a particular process. The system */ 70 /* linkage convention MUST be used because the operating system loader is */ 71 /* calling this function. */ 72 /****************************************************************************/ 73 ULONG APIENTRY inittermShell32(ULONG hModule, ULONG ulFlag) 47 48 ULONG SYSTEM DLL_InitShell32(ULONG hModule) 74 49 { 75 size_t i; 76 APIRET rc; 50 CheckVersionFromHMOD(PE2LX_VERSION, hModule); /*PLF Wed 98-03-18 05:28:48*/ 77 51 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 /*-------------------------------------------------------------------------*/52 dllHandle = RegisterLxDll(hModule, OdinLibMain, (PVOID)&shell32_PEResTab, 53 SHELL32_MAJORIMAGE_VERSION, SHELL32_MINORIMAGE_VERSION, 54 IMAGE_SUBSYSTEM_WINDOWS_GUI); 55 if (dllHandle == 0) 56 return -1; 83 57 84 switch (ulFlag) { 85 case 0 : 86 CheckVersionFromHMOD(PE2LX_VERSION, hModule); /*PLF Wed 98-03-18 05:28:48*/ 58 return 0; 59 } 87 60 88 dllHandle = RegisterLxDll(hModule, OdinLibMain, (PVOID)&shell32_PEResTab, 89 SHELL32_MAJORIMAGE_VERSION, SHELL32_MINORIMAGE_VERSION, 90 IMAGE_SUBSYSTEM_WINDOWS_GUI);91 if(dllHandle == 0)92 return 0UL; 61 void SYSTEM DLL_TermShell32(ULONG hModule) 62 { 63 if (dllHandle) 64 UnregisterLxDll(dllHandle); 65 } 93 66 94 break; 95 case 1 : 96 if(dllHandle) { 97 UnregisterLxDll(dllHandle); 98 } 99 break; 100 default : 101 return 0UL; 102 } 67 ULONG SYSTEM DLL_Init(ULONG hModule) 68 { 69 if (DLL_InitDefault(hModule) == -1) 70 return -1; 71 return DLL_InitShell32(hModule); 72 } 103 73 104 /***********************************************************/ 105 /* A non-zero value must be returned to indicate success. */ 106 /***********************************************************/107 return 1UL;74 void SYSTEM DLL_Term(ULONG hModule) 75 { 76 DLL_TermShell32(hModule); 77 DLL_TermDefault(hModule); 108 78 } 109 //******************************************************************************110 //******************************************************************************
Note:
See TracChangeset
for help on using the changeset viewer.