/* *======================================================================================= * Name : dllcom.cpp * Author : C. Beaudet Date :20/05/97 * Description : Common functions for Object DLL capabilities *======================================================================================= * Modification -> Author : VL Date : 20/05/97 * Description : Common functions for Instanciated Physical Object DLL Test *======================================================================================= */ /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ #include "stdafx.h" #include "acp_base.h" #include "afxdllx.h" #include "ITF.h" #include "IPO_intf.hpp" /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ /* ======================================================================================= Globals ======================================================================================= */ static char *gs_p_szCPAVersion = C_szCPAVersion; static AFX_EXTENSION_MODULE NEAR extensionDLL = { NULL, NULL }; static IPOInterface *gs_p_oIPOInterface = NULL; static CList g_oListOfInstances; //private internal /* ======================================================================================= functions that are present in all DLL : ======================================================================================= */ /* ---------------------------------------------------------------------------------------- Get current CPA version ---------------------------------------------------------------------------------------- */ extern "C" char __declspec(dllexport) *fn_p_szGetCPAVersion(void) { return gs_p_szCPAVersion; } /* ---------------------------------------------------------------------------------------- Description : Get type of this DLL Returns (tdstDLLIdentity ) ---------------------------------------------------------------------------------------- */ extern "C" tdstDLLIdentity __declspec(dllexport) *fn_p_stGetDLLIdentity(void) { g_stIPOIdentity.eType = OBJECT_DLL; //object DLL type g_stIPOIdentity.csName = C_szDLLInstanciatedPhysicalObjectName; //object DLL name (unique name) g_stIPOIdentity.hModule = NULL; //********************** private internal g_stIPOIdentity.p_oListOfInstances = &g_oListOfInstances; //********************** private internal return &g_stIPOIdentity; } /* ---------------------------------------------------------------------------------------- Description : Init DLL function ---------------------------------------------------------------------------------------- */ extern "C" void WINAPI fn_vInitDll(void) { new CDynLinkLibrary(extensionDLL); } /* ---------------------------------------------------------------------------------------- Description : DLL main function hInstance -> DLL instance dwReason -> reason of DLL loading lpReserved -> Returns ( int ) ---------------------------------------------------------------------------------------- */ extern "C" int __stdcall DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved) { if (dwReason == DLL_PROCESS_ATTACH) { if (!AfxInitExtensionModule(extensionDLL, hInstance)) return 0; } return 1; } /* ---------------------------------------------------------------------------------------- Description : Get the DLL lKey -> number of DLL Returns (CPA_DLLBase ) ---------------------------------------------------------------------------------------- */ extern "C" CPA_DLLBase __declspec(dllexport) *fn_p_oGetDLL(long lKey) { switch(lKey) { case 0: // the game world if (gs_p_oIPOInterface == NULL) { gs_p_oIPOInterface = new IPOInterface(); ASSERT(gs_p_oIPOInterface != NULL); } return gs_p_oIPOInterface; break; default: return NULL; } }