//---------------------------------------------------------------------------- // 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 #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 ; }