Files
EgtGeomKernel/EGkDllMain.cpp
T
2013-11-21 17:14:23 +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)
#define EGK_STR "EgtGeomKernelD32.dll ver. "
#else
#define EGK_STR "EgtGeomKernelR32.dll ver. "
#endif
#define 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 ;
}