192 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			192 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
//
 | 
						|
// 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 )
 | 
						|
 |