Files
EgtGeomKernel/EGkDllMain.cpp
T
Dario Sassi 0b4d72acb8 EgtGeomKernel : anche GeoVector3d usa interfaccia IGeo*;
const al posto di #define.
2013-11-22 14:57:00 +00:00

88 lines
2.8 KiB
C++

//----------------------------------------------------------------------------
// EgalTech 2013-2013
//----------------------------------------------------------------------------
// File : EGkDllMain.cpp Data : 20.11.13 Versione : 1.3a1
// Contenuto : Inizializzazione della DLL.
//
//
//
// Modifiche : 16.11.13 DS Creazione modulo.
// 21.11.13 DS Agg. GetEGkVersion.
//
//----------------------------------------------------------------------------
//--------------------------- Include ----------------------------------------
#include "stdafx.h"
#include <windows.h>
#include <\EgtDev\Include\EgtTrace.h>
#include <\EgtDev\Include\EGkVersion.h>
//--------------------------- Costanti ----------------------------------------
#if defined( _DEBUG)
const char* EGK_STR = "EgtGeomKernelD32.dll ver. " ;
#else
const char* EGK_STR = "EgtGeomKernelR32.dll ver. " ;
#endif
const int STR_DIM = 40 ;
//-----------------------------------------------------------------------------
static HINSTANCE s_hModule = NULL ;
static char s_szEGkNameVer[STR_DIM] ;
//-----------------------------------------------------------------------------
extern "C" int APIENTRY
DllMain( HMODULE hModule, DWORD dwReason, LPVOID lpReserved)
{
if ( dwReason == DLL_PROCESS_ATTACH) {
s_hModule = hModule ;
EGT_TRACE( "EgtGeomKernel.dll Initializing!\n") ;
}
else if ( dwReason == DLL_PROCESS_DETACH) {
s_hModule = NULL ;
EGT_TRACE( "EgtGeomKernel.dll Terminating!\n") ;
}
return 1 ;
}
//-----------------------------------------------------------------------------
const char*
GetEGkVersion( void)
{
wchar_t szFileName[_MAX_PATH] ;
DWORD dwNULL ;
DWORD dwSize ;
UINT dwUsefulSize ;
LPVOID lpData ;
LPVOID lpUsefulData ;
VS_FIXEDFILEINFO* pvsInfo ;
// trovo nome del file dato l'hInstance
::GetModuleFileNameW( s_hModule, szFileName, _MAX_PATH) ;
// mi faccio dare il buffer delle informazioni dal file
dwSize = ::GetFileVersionInfoSizeW( szFileName, &dwNULL) ;
lpData = malloc( size_t( dwSize));
GetFileVersionInfoW( szFileName, dwNULL, dwSize, lpData) ;
// Chiedo le info standard
if ( ::VerQueryValueW( lpData, L"\\", &lpUsefulData, &dwUsefulSize)) {
pvsInfo = (VS_FIXEDFILEINFO*) lpUsefulData ;
sprintf_s( s_szEGkNameVer, STR_DIM, "%s%d.%d%c%d",
EGK_STR,
pvsInfo->dwFileVersionMS >> 16,
pvsInfo->dwFileVersionMS % 0x10000,
(pvsInfo->dwFileVersionLS >> 16) + 96,
pvsInfo->dwFileVersionLS % 0x10000);
}
else
sprintf_s( s_szEGkNameVer, STR_DIM, "%s0.0a0", EGK_STR) ;
// disalloco il buffer
free( lpData) ;
return s_szEGkNameVer ;
}