Changeset 21757 for branches/gcc-kmk/src


Ignore:
Timestamp:
Oct 29, 2011, 1:40:19 AM (14 years ago)
Author:
dmik
Message:

Fix NTDLL init/term code.

File:
1 moved

Legend:

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

    r21735 r21757  
    11/*
    2  * DLL entry point
     2 * NTDLL DLL entry point
    33 *
    44 * Copyright 1998 Sander van Leeuwen
    55 * Copyright 1998 Peter Fitzsimmons
    66 *
    7  *
    87 * Project Odin Software License can be found in LICENSE.TXT
    9  *
    108 */
    119
    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 */
    2510#include <os2.h>    //Odin32 OS/2 api wrappers
    2611#include <win32type.h>
     
    3419#include <exitlist.h>
    3520
     21extern "C"
     22BOOL WIN32API NTDLL_LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved);
    3623
    37 BOOL WIN32API NTDLL_LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved);
    3824extern DWORD ntdll_PEResTab;
    3925
    4026static HMODULE dllHandle = 0;
    4127
    42 //******************************************************************************
    43 //******************************************************************************
    44 ULONG APIENTRY inittermNTDLL(ULONG hModule, ULONG ulFlag)
     28ULONG SYSTEM DLL_Init(ULONG hModule)
    4529{
    46    /*-------------------------------------------------------------------------*/
    47    /* If ulFlag is zero then the DLL is being loaded so initialization should */
    48    /* be performed.  If ulFlag is 1 then the DLL is being freed so            */
    49    /* termination should be performed.                                        */
    50    /*-------------------------------------------------------------------------*/
     30    if (DLL_InitDefault(hModule) == -1)
     31        return -1;
    5132
    52    switch (ulFlag) {
    53       case 0 :
     33    //Initialize kernel32 first (circular dependency between kernel32 & ntdll)
     34    if (!InitializeKernel32())
     35        return -1;
    5436
    55          //Initialize kernel32 first (circular dependency between kernel32 & ntdll)
    56          if (!InitializeKernel32())
    57              return 0;
     37    CheckVersionFromHMOD(PE2LX_VERSION, hModule); /*PLF Wed  98-03-18 05:28:48*/
     38    dllHandle = RegisterLxDll(hModule, (WIN32DLLENTRY)NTDLL_LibMain,
     39                              (PVOID)&ntdll_PEResTab,
     40                              0, 0, 0);
     41    if(dllHandle == 0)
     42        return -1;
    5843
    59          CheckVersionFromHMOD(PE2LX_VERSION, hModule); /*PLF Wed  98-03-18 05:28:48*/
    60          dllHandle = RegisterLxDll(hModule, (WIN32DLLENTRY)NTDLL_LibMain, (PVOID)&ntdll_PEResTab,
    61                                    0, 0, 0);
    62          if(dllHandle == 0)
    63              return 0UL;
     44    dprintf(("NTDLL INIT %s %s (%x)", __DATE__, __TIME__, DLL_Init));
     45}
    6446
    65          dprintf(("ntdll init %s %s (%x)", __DATE__, __TIME__, inittermNTDLL));
    66          break;
    67       case 1 :
    68          if(dllHandle) {
    69              UnregisterLxDll(dllHandle);
    70          }
    71          break;
    72       default  :
    73          return 0UL;
    74    }
     47void SYSTEM DLL_Term(ULONG hModule)
     48{
     49    dprintf(("NTDLL TERM"));
    7550
    76    /***********************************************************/
    77    /* A non-zero value must be returned to indicate success.  */
    78    /***********************************************************/
    79    return 1UL;
     51    UnregisterLxDll(dllHandle);
     52    DLL_TermDefault(hModule);
    8053}
    81 //******************************************************************************
    82 //******************************************************************************
     54
Note: See TracChangeset for help on using the changeset viewer.