/*========================================================================== * * Copyright (C) 1995 Microsoft Corporation. All Rights Reserved. * * File: libmain.c * Content: entry points in the DLL *@@BEGIN_MSINTERNAL * History: * Date By Reason * ==== == ====== * 20-jan-95 craige initial implementation * 03-jul-95 craige export instance handle *@@END_MSINTERNAL * ***************************************************************************/ #include "ddraw16.h" // in gdihelp.c extern void GdiHelpCleanUp(void); extern BOOL GdiHelpInit(void); // in modex.c extern UINT ModeX_Width; extern WORD hselSecondary; HINSTANCE hInstApp; HGLOBAL hAlloc = 0; int FAR PASCAL LibMain(HINSTANCE hInst, WORD wHeapSize, LPCSTR lpCmdLine) { hInstApp = hInst; pWin16Lock = GetWin16Lock(); GdiHelpInit(); DPFINIT(); hAlloc = GlobalAlloc(GMEM_FIXED | GMEM_SHARE, 65536); hselSecondary = (WORD) hAlloc; if( hselSecondary ) { LocalInit(hselSecondary, 16, 65536-4); // Keep DWORD aligned } return 1; } BOOL FAR PASCAL _loadds WEP( WORD wParm ) { DPF( 1, "WEP" ); // // clean up DCI // if( wFlatSel ) { VFDEndLinearAccess(); SetSelLimit( wFlatSel, 0 ); FreeSelector( wFlatSel ); wFlatSel = 0; } if( hAlloc ) { GlobalFree( hAlloc ); } // // let gdihelp.c cleaup global objects // GdiHelpCleanUp(); // // if we are still in ModeX, leave now // if( ModeX_Width ) { ModeX_RestoreMode(); } return 1; } extern BOOL FAR PASCAL thk3216_ThunkConnect16( LPSTR pszDll16, LPSTR pszDll32, WORD hInst, DWORD dwReason); extern BOOL FAR PASCAL thk1632_ThunkConnect16( LPSTR pszDll16, LPSTR pszDll32, WORD hInst, DWORD dwReason); #define DLL_PROCESS_ATTACH 1 #define DLL_THREAD_ATTACH 2 #define DLL_THREAD_DETACH 3 #define DLL_PROCESS_DETACH 0 static char __based(__segname("LIBMAIN_TEXT")) szDll16[] = DDHAL_DRIVER_DLLNAME; static char __based(__segname("LIBMAIN_TEXT")) szDll32[] = DDHAL_APP_DLLNAME; BOOL FAR PASCAL __export DllEntryPoint( DWORD dwReason, WORD hInst, WORD wDS, WORD wHeapSize, DWORD dwReserved1, WORD wReserved2) { DPF( 1, "DllEntryPoint: dwReason=%ld, hInst=%04x, dwReserved1=%08lx, wReserved2=%04x", dwReason, hInst, wDS, dwReserved1, wReserved2 ); if( !thk3216_ThunkConnect16( szDll16, szDll32, hInst, dwReason)) { return FALSE; } if( !thk1632_ThunkConnect16( szDll16, szDll32, hInst, dwReason)) { return FALSE; } return TRUE; }