// // AL200.CPP // // Source file for ArchiveLib 2.0 // // Copyright (c) Greenleaf Software, Inc. 1994-1996 // All Rights Reserved // // CONTENTS // // LibMain() // WEP() // // DESCRIPTION // // This file contains LibMain() and the WEP() for ArchiveLib DLLs. // We don't really do anything exciting in the WEP, it is just // here for decoration. LibMain() has to set up memory allocation // for Borland. // // REVISION HISTORY // // May 20, 1994 1.0A : First release // // January 6, 1995 1.01A : Moved this file to cpp_all, we are now // supporting DOS DLLs with PowerPack. // // February 14, 1996 2.0A : New release. // #include "arclib.h" #if !defined( AL_IBM ) #pragma hdrstop #endif #if defined( AL_BUILDING_DLL ) && defined( AL_WINDOWS ) #define STRICT #include // // NAME // // LibMain() // // PLATFORMS/ENVIRONMENTS // // Windows // C++ // // SHORT DESCRIPTION // // The DLL Entry point. // // C++ SYNOPSIS // // #include "arclib.h" // // int LibMain( HINSTANCE hInst, // WORD wDS, // WORD cbHeap, // LPSTR lpCmdLine ); // // C SYNOPSIS // // None. // // VB SYNOPSIS // // None. // // DELPHI SYNOPSIS // // None. // // ARGUMENTS // // hInst : Instance handle of the DLL. We don't use this. // // wDS : DS value for the DLL. We don't use this. // // cbHeap : Size of the local heap for the DLL. We don't use this. // // lpCmdLine : The command line used to start the DLL. We don't use this. // // DESCRIPTION // // The only time we need to do anything in the startup of a DLL is under // Borland C++. By default, Borland DLLs allocate memory in non-shared // mode, which means multiple processes can delete one-anothers memory // when it has been served up out of the subsegment allocator. This // fixes that problem. // // RETURNS // // Always returns 1; // // EXAMPLE // // SEE ALSO // // REVISION HISTORY // // November 13, 1995 2.00A : First release. // extern "C" int CALLBACK LibMain( HINSTANCE, /* Tag internal function */ WORD, WORD, LPSTR ) { // // I believe that both Microsoft and Symantec take care of this // detail for me. However, Borland 3.1 did not. Not sure about // Borland 4.0 // #if defined( AL_BORLAND ) && !defined( AL_FLAT_MODEL ) extern unsigned _WinAllocFlag; _WinAllocFlag |= GMEM_SHARE; #endif return 1; } // // NAME // // WEP() // // PLATFORMS/ENVIRONMENTS // // Windows // C++ // // SHORT DESCRIPTION // // The DLL exit procedure. // // C++ SYNOPSIS // // #include "arclib.h" // // int FAR PASCAL WEP( int nParameter ); // // C SYNOPSIS // // None. // // VB SYNOPSIS // // None. // // DELPHI SYNOPSIS // // None. // // ARGUMENTS // // nParameter : A parameter that can be used to determine whether this // DLL is being shut down, or whether all of Windows is // being shut down. This WEP() ignores the parameter. // // DESCRIPTION // // We have no use for a WEP, and I'm not sure if it is even being called. // WEP names are tricky. // // RETURNS // // Always returns 1 // // EXAMPLE // // SEE ALSO // // REVISION HISTORY // // November 13, 1995 2.00A : First release. // #if defined( AL_BORLAND ) && ( AL_BORLAND >= 0x410 ) extern "C" int FAR PASCAL WEP(int) /* Tag internal function */ #else extern "C" int FAR PASCAL _WEP(int) #endif { /* Your WEP functionality goes here */ return 1; } #endif //#if defined( AL_BUILDING_DLL )