Files
EgtGeneral/EGnDllMain.cpp
T
2013-11-22 14:54:37 +00:00

88 lines
2.8 KiB
C++

//----------------------------------------------------------------------------
// EgalTech 2013-2013
//----------------------------------------------------------------------------
// File : EGnDllMain.cpp Data : 20.11.13 Versione : 1.3a1
// Contenuto : Inizializzazione della DLL.
//
//
//
// Modifiche : 20.11.13 DS Creazione modulo.
// 21.11.13 DS Agg. GetEGnVersion.
//
//----------------------------------------------------------------------------
//--------------------------- Include ----------------------------------------
#include "stdafx.h"
#include <windows.h>
#include <\EgtDev\Include\EgtTrace.h>
#include <\EgtDev\Include\EGnVersion.h>
//--------------------------- Costanti ----------------------------------------
#if defined( _DEBUG)
const char* EGK_STR = "EgtGeneralD32.dll ver. " ;
#else
const char* EGK_STR = "EgtGeneralR32.dll ver. " ;
#endif
const int STR_DIM = 40 ;
//-----------------------------------------------------------------------------
static HINSTANCE s_hModule = NULL ;
static char s_szEGnNameVer[STR_DIM] ;
//-----------------------------------------------------------------------------
BOOL APIENTRY
DllMain( HMODULE hModule, DWORD dwReason, LPVOID lpReserved)
{
if ( dwReason == DLL_PROCESS_ATTACH) {
s_hModule = hModule ;
EGT_TRACE( "EgtGeneral.dll Initializing!\n") ;
}
else if ( dwReason == DLL_PROCESS_DETACH) {
s_hModule = NULL ;
EGT_TRACE( "EgtGeneral.dll Terminating!\n") ;
}
return 1 ;
}
//-----------------------------------------------------------------------------
const char*
GetEGnVersion( 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_szEGnNameVer, 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_szEGnNameVer, STR_DIM, "%s0.0a0", EGK_STR) ;
// disalloco il buffer
free( lpData) ;
return s_szEGnNameVer ;
}