Changeset 21865 for branches/gcc-kmk/src/wsock32/initterm.cpp
- Timestamp:
- Dec 8, 2011, 2:32:54 PM (14 years ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
branches/gcc-kmk/src/wsock32/initterm.cpp
r21842 r21865 1 /* $Id: init wsock32.cpp,v 1.4 2001-10-13 18:51:08 sandervlExp $1 /* $Id: initterm.cpp,v 1.17 2001-09-05 10:26:30 bird Exp $ 2 2 * 3 * DLL entry point3 * WSOCK32 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 "dbglocal.h" 41 26 42 extern "C" { 43 //Win32 resource table (produced by wrc) 44 extern DWORD wsock32_PEResTab; 45 } 27 // Win32 resource table (produced by wrc) 28 extern DWORD wsock32_PEResTab; 29 46 30 static HMODULE dllHandle = 0; 47 31 48 32 INT WIN32API WSACleanup(); 49 //****************************************************************************** 50 //****************************************************************************** 33 51 34 BOOL WINAPI WinsockLibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad) 52 35 { 53 switch (fdwReason)54 {55 case DLL_PROCESS_ATTACH:56 return TRUE;36 switch (fdwReason) 37 { 38 case DLL_PROCESS_ATTACH: 39 return TRUE; 57 40 58 case DLL_THREAD_ATTACH:59 case DLL_THREAD_DETACH:60 return TRUE;41 case DLL_THREAD_ATTACH: 42 case DLL_THREAD_DETACH: 43 return TRUE; 61 44 62 case DLL_PROCESS_DETACH:63 WSACleanup();64 return TRUE;65 }66 return FALSE;45 case DLL_PROCESS_DETACH: 46 WSACleanup(); 47 return TRUE; 48 } 49 return FALSE; 67 50 } 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 inittermWsock32(ULONG hModule, ULONG ulFlag) 51 52 ULONG SYSTEM DLL_InitWSock32(ULONG hModule) 77 53 { 78 size_t i; 79 APIRET rc; 54 CheckVersionFromHMOD(PE2LX_VERSION, hModule); /*PLF Wed 98-03-18 05:28:48*/ 80 55 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 /*-------------------------------------------------------------------------*/ 56 ParseLogStatusWSOCK32(); 86 57 87 switch (ulFlag) {88 case 0 :89 ParseLogStatusWSOCK32();58 dllHandle = RegisterLxDll(hModule, WinsockLibMain, (PVOID)&wsock32_PEResTab); 59 if (dllHandle == 0) 60 return -1; 90 61 91 dllHandle = RegisterLxDll(hModule, WinsockLibMain, (PVOID)&wsock32_PEResTab); 92 if(dllHandle == 0) 93 return 0UL; 62 return 0; 63 } 94 64 95 break; 96 case 1 : 97 if(dllHandle) { 98 UnregisterLxDll(dllHandle); 99 } 100 break; 101 default : 102 return 0UL; 103 } 65 void SYSTEM DLL_TermWSock32(ULONG hModule) 66 { 67 if (dllHandle) 68 UnregisterLxDll(dllHandle); 69 } 104 70 105 /***********************************************************/ 106 /* A non-zero value must be returned to indicate success. */ 107 /***********************************************************/ 108 return 1UL; 71 ULONG SYSTEM DLL_Init(ULONG hModule) 72 { 73 if (DLL_InitDefault(hModule) == -1) 74 return -1; 75 return DLL_InitWSock32(hModule); 109 76 } 110 //****************************************************************************** 111 //****************************************************************************** 77 78 void SYSTEM DLL_Term(ULONG hModule) 79 { 80 DLL_TermWSock32(hModule); 81 DLL_TermDefault(hModule); 82 }
Note:
See TracChangeset
for help on using the changeset viewer.