Ignore:
Timestamp:
Dec 15, 2011, 12:50:15 PM (14 years ago)
Author:
dmik
Message:

Port MSCMS to GCC/kBuild.

File:
1 moved

Legend:

Unmodified
Added
Removed
  • branches/gcc-kmk/src/mscms/initterm.cpp

    r21842 r21891  
    1 /* $Id: initgdi32.cpp,v 1.16 2004/01/11 11:42:17 sandervl Exp $
     1/* $Id: initterm.cpp,v 1.17 2001/09/05 10:26:30 bird Exp $
    22 *
    3  * DLL entry point
     3 * MSCMS DLL entry point
    44 *
    55 * Copyright 1998 Sander van Leeuwen
    66 * Copyright 1998 Peter Fitzsimmons
    77 *
    8  *
    98 * Project Odin Software License can be found in LICENSE.TXT
    10  *
    119 */
    1210
    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 */
    2611#define  INCL_DOSMODULEMGR
    2712#define  INCL_DOSPROCESS
     
    3823#include <initdll.h>
    3924
    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;
    4530
    4631static HMODULE dllHandle = 0;
    4732
     33BOOL WINAPI mscmsDllMain(HINSTANCE hInst, DWORD fdwReason, PVOID pvReserved);
     34
    4835static BOOL WINAPI OdinLibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
    4936{
    50    BOOL ret;
     37    BOOL ret;
    5138
    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);
    5643
    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);
    6047
    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;
    6653}
    6754
    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)
     55ULONG SYSTEM DLL_InitMSCms(ULONG hModule)
    7756{
    78    size_t i;
    79    APIRET rc;
     57    if (!InitializeKernel32())
     58        return 0;
    8059
    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*/
    8661
    87    switch (ulFlag) {
    88       case 0 :
     62    dllHandle = RegisterLxDll(hModule, OdinLibMain, NULL);
     63    if(dllHandle == 0)
     64        return -1;
    8965
    90          if (!InitializeKernel32())
    91              return 0;
     66    dprintf(("mscms init %s %s (%x)", __DATE__, __TIME__, DLL_InitMSCms));
    9267
    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}
    9770
    98          dprintf(("mscms init %s %s (%x)", __DATE__, __TIME__, inittermmscms));
     71void SYSTEM DLL_TermMSCms(ULONG hModule)
     72{
     73    if (dllHandle)
     74       UnregisterLxDll(dllHandle);
     75}
    9976
    100          break;
    101       case 1 :
    102          if(dllHandle) {
    103              UnregisterLxDll(dllHandle);
    104          }
    105          break;
    106       default  :
    107          return 0UL;
    108    }
     77ULONG SYSTEM DLL_Init(ULONG hModule)
     78{
     79    if (DLL_InitDefault(hModule) == -1)
     80        return -1;
     81    return DLL_InitMSCms(hModule);
     82}
    10983
    110    /***********************************************************/
    111    /* A non-zero value must be returned to indicate success.  */
    112    /***********************************************************/
    113    return 1UL;
     84void SYSTEM DLL_Term(ULONG hModule)
     85{
     86    DLL_TermMSCms(hModule);
     87    DLL_TermDefault(hModule);
    11488}
    115 //******************************************************************************
    116 //******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.