Массив модулей для ограниченного обработчика
static PFNCHFILTFN g_pfnCallBack = NULL;
// Оригинальный фильтр необработанных исключений
static LPTOP_LEVEL_EXCEPTION_FILTER g_pfnOrigFilt = NULL;
// Массив модулей для ограниченного обработчика аварий
static HMODULE * g_ahMod = NULL;
// Размер массива g_ahMod (число элементов)
static UINT g_uiModCount = 0;
// Статический буфер, возвращаемый различными функциями. Этот буфер
// позволяет передавать данные без использования стека,
static TCHAR g_szBuff [ BUFF_SIZE ];
// Буфер поиска статических символов
static BYTE g_stSymbol [ SYM_BUFF_SIZE ];
// Структура статического исходного файла и номера строки
static IMAGEHLP_LINE g_stLine;
// Кадр стека, используемый для его проходов
static STACKFRAME g_stFrame;
// Флажки, указывающие, что символьная машина была инициализирована
static BOOL g_bSymEngInit = FALSE;
/*////////////////////////////////////////////////////
Объявление функций области видимости файла
/////////////////////////////////////////////////////*/
// Обработчик исключений
LONG _stdcall CrashHandlerExceptionFilter ( EXCEPTION_POINTERS *
pExPtrs );
// Конвертирует простое исключение в строчное значение
LPCTSTR ConvertSimpleException ( DWORD dwExcept);
// Внутренняя функция, которая выполняет все проходы по стеку
LPCTSTR _stdcall
InternalGetStackTraceString ( DWORD dwOpts ,
EXCEPTION_POINTERS * pExPtrs);
// Внутренняя функция SymGetLineFromAddr
BOOL InternalSymGetLineFromAddr ( IN HANDLE hProcess ,
IN DWORD dwAddr ,
OUT PDWORD pdwDisplacement,
OUT PIMAGEHLP_LINE Line , );
// Инициализирует символьную машину, если это необходимо void InitSymEng ( void);
// Очищает символьную машину, если это необходимо
void CleanupSymEng ( void);
/*/////////////////////////////////////////////////
Класс деструктора
//////////////////////////////////////////////////*/
// См. Примечание в MEMDUMPVALIDATOR.CPP об автоматических классах.
Содержание Назад Вперед