Временное хранилище значения. Оно позволяет
return ( NULL);
}
// Переменная, которая содержит возвращаемое значение
LPCTSTR szRet;
_try
{
// Инициализировать символьную машину в случае, если она
//не инициализирована.
InitSymEng ();
// Текущая позиция в буфере
int iCurr = 0;
// Временное хранилище значения. Оно позволяет свести
// использование стека к минимуму.
DWORD dwTemp;
iCurr += BSUGetModuleBaseName ( GetCurrentProcess (),
NULL
, g_szBuff ,
BUFF_SIZE );
iCurr += wsprintf ( g_szBuff + iCurr, _T ( " caused an "));
dwTemp = (DWORD)
ConvertSimpleException ( pExPtrs->ExceptionRecord->
ExceptionCode);
if ( NULL != dwTemp)
{
iCurr += wsprintf ( g_szBuff + iCurr, _T ( "%s") dwTemp );
}
else
{
iCurr += ( FormatMessage ( FORMAT_MESSAGE_IGNORE_INSERTS |
FORMAT_MESSAGE_FROM_HMODULE,
GetModuleHandle (_T("NTDLL.DLL")),
pExPtrs->ExceptionRecord->
ExceptionCode,
0,
g_szBuff + iCurr ,
BUFF_SIZE,
0 )
* sizeof ( TCHAR));
}
ASSERT ( iCurr < ( BUFF_SIZE - MAX_PATH));
iCurr += wsprintf ( g_szBuff + i.Curr, _T ( " in module ") ) ;
dwTemp =
SymGetModuleBase ( (HANDLE)GetCurrentProcessId (),
(DWORD)pExPtrs->ExceptionRecord->
ExceptionAddress);
ASSERT ( NULL != dwTemp);
if ( NULL == dwTemp)
{
iCurr += wsprintf ( g_szBuff + iCurr, _T ( "<UNKNOWN>"));
}
else
{
iCurr += BSUGetModuleBaseName ( GetCurrentProcess () ,
(HINSTANCE)dwTemp ,
g_szBuff + iCurr
BUFF_SIZE - iCurr );
}
#ifdef _WIN64
iCurr += wsprintf ( g_szBuff + iCurr ,
_T ( " at %016X") ,
pExPtrs->ExceptionRecord->ExceptionAddress);
#else
iCurr += wsprintf ( g_szBuff + iCurr ,
_T ( " at %04X:%08X") ,
pExPtrs->ContextRecord->SegCs ,
pExPtrs->ExceptionRecord->ExceptionAddress);
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий