Ignore:
Timestamp:
Dec 6, 2011, 6:19:13 PM (14 years ago)
Author:
dmik
Message:

Port OLE32 and REGSVR32 to GCC/kBuild.

File:
1 moved

Legend:

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

    r21842 r21855  
    11/*
    2  * DLL entry point
     2 * OLE32 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#define  INCL_DOSMODULEMGR
    2611#define  INCL_DOSPROCESS
     
    3621#include <initdll.h>
    3722
    38 extern "C" {
    39  //Win32 resource table (produced by wrc)
    40  extern DWORD ole32os2_PEResTab;
    41 }
     23// Win32 resource table (produced by wrc)
     24extern DWORD ole32_PEResTab;
     25
    4226static HMODULE dllHandle = 0;
    4327
    4428BOOL WINAPI OLE32_DllEntryPoint(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad);
    45 //******************************************************************************
    46 //******************************************************************************
     29
    4730BOOL WINAPI LibMainOLE32(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
    4831{
     
    6043   return FALSE;
    6144}
    62 /****************************************************************************/
    63 /* _DLL_InitTerm is the function that gets called by the operating system   */
    64 /* loader when it loads and frees this DLL for each process that accesses   */
    65 /* this DLL.  However, it only gets called the first time the DLL is loaded */
    66 /* and the last time it is freed for a particular process.  The system      */
    67 /* linkage convention MUST be used because the operating system loader is   */
    68 /* calling this function.                                                   */
    69 /****************************************************************************/
    70 ULONG APIENTRY inittermOle32(unsigned long hModule, unsigned long ulFlag)
     45
     46ULONG SYSTEM DLL_InitOle32(ULONG hModule)
    7147{
    72    size_t i;
    73    APIRET rc;
     48    CheckVersionFromHMOD(PE2LX_VERSION, hModule); /*PLF Wed  98-03-18 05:28:48*/
    7449
    75    /*-------------------------------------------------------------------------*/
    76    /* If ulFlag is zero then the DLL is being loaded so initialization should */
    77    /* be performed.  If ulFlag is 1 then the DLL is being freed so            */
    78    /* termination should be performed.                                        */
    79    /*-------------------------------------------------------------------------*/
     50    dllHandle = RegisterLxDll(hModule, LibMainOLE32, (PVOID)&ole32_PEResTab);
     51    if (dllHandle == 0)
     52           return -1;
    8053
    81    switch (ulFlag) {
    82       case 0 :
    83       {
    84          dllHandle = RegisterLxDll(hModule, LibMainOLE32, (PVOID)&ole32os2_PEResTab);
    85          if(dllHandle == 0)
    86                 return 0UL;
     54    return 0;
     55}
    8756
    88          break;
    89       }
    90       case 1 :
    91          if(dllHandle) {
    92                 UnregisterLxDll(dllHandle);
    93          }
    94          break;
     57void SYSTEM DLL_TermOle32(ULONG hModule)
     58{
     59    if (dllHandle)
     60       UnregisterLxDll(dllHandle);
     61}
    9562
    96       default  :
    97          return 0UL;
    98    }
     63ULONG SYSTEM DLL_Init(ULONG hModule)
     64{
     65    if (DLL_InitDefault(hModule) == -1)
     66        return -1;
     67    return DLL_InitOle32(hModule);
     68}
    9969
    100    /***********************************************************/
    101    /* A non-zero value must be returned to indicate success.  */
    102    /***********************************************************/
    103    return 1UL;
     70void SYSTEM DLL_Term(ULONG hModule)
     71{
     72    DLL_TermOle32(hModule);
     73    DLL_TermDefault(hModule);
    10474}
    105 //******************************************************************************
    106 //******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.