campo-sirio/al/cpp_dll/al200.cpp

192 lines
3.6 KiB
C++
Raw Normal View History

//
// 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 <windows.h>
//
// 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 )