Отладка приложений


         

Параметр szVer будет содержать строку


// Параметр szVer будет содержать строку вида: 5.00.1878.1
BOOL GetlmageHlpVersion ( DWORD & dwMS, DWORD & dwLS)
{
return( GetlnMemoryFileVersion ( _T ( "DBGHELP.DLL"),
dwMS , 
dwLS ) ) ; 
}
BOOL GetDbgHelpVersion ( DWORD & dwMS, DWORD & dwLS)
 {
return( GetlnMemoryFileVersion ( __T ( "DBGHELP.DLL"),
dwMS , 
dwLS ) ) ; 
}
// Возвращает версию DLL-файлов, читающих PDB.
 BOOL GetPDBReaderVersion ( DWORD & dwMS, DWORD & dwLS)
 {
// Первым проверяется файл MSDBI.DLL.
if ( TRUE == GetlnMemoryFileVersion ( _T ( "MSDBI.DLL"),
dwMS ,
 dwLS ) )
 {
return ( TRUE); 
}
else if.( TRUE == GetlnMemoryFileVersion ( _T ( "MSPDB60.DLL"),
dwMS
dwLS ) ) 
{
return ( TRUE); 
}
// Теперь пришла очередь проверить MSPDB50.DLL. 
return ( GetlnMemoryFileVersion ( _T ( "MSPDB50.DLL"),
dwMS
dwLS ) ) ;
 }
// Рабочая функция, используемая двумя предшествующими функциями.
 BOOL GetlnMemoryFileVersion ( LPCTSTR szFile,
DWORD & dwMS , 
DWORD & dwLS ) 
{
HMODULE hlnstlH = GetModuleHandle ( szFile);
// Получить полное имя файла загруженной версии
TCHAR sz!mageHlp[ MAX_PATH ];
GetModuleFileName ( hlnst-IH, szImageHlp, MAX_PATH);
dwMS = 0;
dwLS = 0;
// Получить размер информации о версии.
DWORD dwVerlnfoHandle;
DWORD dwVerSize;
dwVerSize = GetFileVersionlnfoSize ( szImageHlp ,
SdwVerlnfoHandle ); 
if ( 0 == dwVerSize) 
{
return ( FALSE); 
}
// Получили размер информации о версии, теперь получим
 // саму информацию.
LPVOID IpData = (LPVOID)new TCHAR [ dwVerSize ]; 
if ( FALSE == GetFileVersionlnfo ( szImageHlp ,
dwVerlnfoHandle , dwVerSize , IpData )) 
{
delete [] IpData; return ( FALSE);
 }
VS_FIXEDFILEINFO * IpVerlnfo; 
UINT uiLen;
BOOL bRet = VerQueryValue ( IpData ,
_T ( "\\")
  (LPVOID*)SlpVerlnfo, &uiLen ) ;

Содержание  Назад  Вперед