| [10005] | 1 | /*
 | 
|---|
 | 2 |  * DLL entry point
 | 
|---|
 | 3 |  *
 | 
|---|
 | 4 |  * Copyright 1998 Sander van Leeuwen
 | 
|---|
 | 5 |  * Copyright 1998 Peter Fitzsimmons
 | 
|---|
 | 6 |  *
 | 
|---|
 | 7 |  *
 | 
|---|
 | 8 |  * Project Odin Software License can be found in LICENSE.TXT
 | 
|---|
 | 9 |  *
 | 
|---|
 | 10 |  */
 | 
|---|
 | 11 | 
 | 
|---|
 | 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 | #include <windows.h>
 | 
|---|
 | 26 | #include <odinlx.h>
 | 
|---|
 | 27 | #include <misc.h>       /*PLF Wed  98-03-18 23:18:15*/
 | 
|---|
 | 28 | #include <initdll.h>
 | 
|---|
 | 29 | 
 | 
|---|
 | 30 |  void __ctordtorInit (void);
 | 
|---|
 | 31 |  void __ctordtorTerm (void);
 | 
|---|
 | 32 |  int _CRT_init (void);
 | 
|---|
 | 33 |  void _CRT_term (void);
 | 
|---|
 | 34 | 
 | 
|---|
 | 35 | 
 | 
|---|
 | 36 | /****************************************************************************/
 | 
|---|
 | 37 | /* _DLL_InitTerm is the function that gets called by the operating system   */
 | 
|---|
 | 38 | /* loader when it loads and frees this DLL for each process that accesses   */
 | 
|---|
 | 39 | /* this DLL.  However, it only gets called the first time the DLL is loaded */
 | 
|---|
 | 40 | /* and the last time it is freed for a particular process.  The system      */
 | 
|---|
 | 41 | /* linkage convention MUST be used because the operating system loader is   */
 | 
|---|
 | 42 | /* calling this function.                                                   */
 | 
|---|
 | 43 | /****************************************************************************/
 | 
|---|
| [21395] | 44 | extern void InitOverrides(void) __asm__("InitOverrides");
 | 
|---|
| [10005] | 45 | 
 | 
|---|
 | 46 | unsigned long SYSTEM _DLL_InitTerm(unsigned long hModule, unsigned long
 | 
|---|
 | 47 |                                    ulFlag)
 | 
|---|
 | 48 | {
 | 
|---|
 | 49 | 
 | 
|---|
 | 50 |    /*-------------------------------------------------------------------------*/
 | 
|---|
 | 51 |    /* If ulFlag is zero then the DLL is being loaded so initialization should */
 | 
|---|
 | 52 |    /* be performed.  If ulFlag is 1 then the DLL is being freed so            */
 | 
|---|
 | 53 |    /* termination should be performed.                                        */
 | 
|---|
 | 54 |    /*-------------------------------------------------------------------------*/
 | 
|---|
 | 55 | 
 | 
|---|
 | 56 |    switch (ulFlag) {
 | 
|---|
 | 57 |       case 0 :
 | 
|---|
 | 58 |          if (_CRT_init () != 0)
 | 
|---|
 | 59 |            return 0;
 | 
|---|
 | 60 |          __ctordtorInit ();
 | 
|---|
 | 61 |          InitOverrides();
 | 
|---|
 | 62 |          return inittermMSVCRT(hModule, ulFlag);
 | 
|---|
 | 63 | 
 | 
|---|
 | 64 |       case 1 :
 | 
|---|
 | 65 |          return inittermMSVCRT(hModule, ulFlag);
 | 
|---|
 | 66 | 
 | 
|---|
 | 67 |       default  :
 | 
|---|
 | 68 |          return 0UL;
 | 
|---|
 | 69 |    }
 | 
|---|
 | 70 | 
 | 
|---|
 | 71 |    /***********************************************************/
 | 
|---|
 | 72 |    /* A non-zero value must be returned to indicate success.  */
 | 
|---|
 | 73 |    /***********************************************************/
 | 
|---|
 | 74 |    return 1UL;
 | 
|---|
 | 75 | }
 | 
|---|