//$$---- Proj source axlib---- (stAXLibProjectSource)
#include <vcl.h>
#pragma hdrstop
#include <atl\atlvcl.h>

#include "DLPrinterPortIOXImpl1.h"
USEFORM("About1.cpp", DLPrinterPortIOXXAbout);
//---------------------------------------------------------------------------
#pragma package(smart_init)
TComModule  DLPrinterPortIOXXControl1Module;
TComModule &_Module = DLPrinterPortIOXXControl1Module;

// La carte (MAP) des objets ATL contient une table de structures _ATL_OBJMAP_ENTRY qui
// décrit les objets de votre serveur OLE. La carte est manipulée par
// l'objet CComModule-derived _Module de votre projet via la méthode Init.
//
BEGIN_OBJECT_MAP(ObjectMap)
  OBJECT_ENTRY(CLSID_DLPrinterPortIOXX, TDLPrinterPortIOXXImpl)
END_OBJECT_MAP()

// Point d'entrée de votre serveur invoqué par Windows lorsque les processus ou threads
// sont initialisés ou terminés.
//
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{
    if (reason == DLL_PROCESS_ATTACH)
    {
        _Module.Init(ObjectMap, hinst);
        DisableThreadLibraryCalls(hinst);
    }
    return TRUE;
}

// _Module.Term est typiquement invoqué depuis le DLL_PROCESS_DETACH de votre
// DllEntryPoint. Cependant, ceci peut induire une séquence de terminaison incorrecte.
// Au lieu de cela, une routine de sortie (Exit) est définie pour invoquer la routine de
//  nettoyage CComModule::Term.
//
void ModuleTerm(void)
{
    _Module.Term();
}
#pragma exit ModuleTerm 63

// Point d'entrée de votre serveur invoqué pour savoir si la DLL n'est plus
// utilisée et peut donc être déchargée.
//
STDAPI __export DllCanUnloadNow(void)
{
    return (_Module.GetLockCount()==0) ? S_OK : S_FALSE;
}

// Point d'entrée de votre serveur permettant à OLE de récupérer un objet de classe
// de votre serveur
//
STDAPI __export DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{
    return _Module.GetClassObject(rclsid, riid, ppv);
}

// Point d'entrée de votre serveur invoqué pour indiquer au serveur de créer
// les entrées de registre pour toutes les classes supportées par le module
//
STDAPI __export DllRegisterServer(void)
{
    return _Module.RegisterServer(TRUE);
}

// Point d'entrée de votre serveur invoqué pour indiquer au serveur de retirer
// toutes les entrées de registres créées avec DllRegisterServer.
//
STDAPI __export DllUnregisterServer(void)
{
    return _Module.UnregisterServer();
}
//---------------------------------------------------------------------------
