defHandler – статическая переменная, в которой
сохраняется адрес предыдущего обработчика.
handler – наш обработчик исключения.
Разумеется, внимательный читатель уже заметил
некоторую нелогичность в этих суждениях. Зачем пытаться зарегистрировать свой
обработчик таким изощренным методом, если достаточно поместить свой блок __try
__except в функции main? Дело в том, что при использовании MFC, ATL или
какой-то иной библиотеки не имеется доступа к пользовательской точке входа, и, стало быть, нельзя установить свой обработчик.
Сейчас пришло время собрать воедино все сказанное выше
и написать небольшую программу, иллюстрирующую способ установки обработчика. К
статье прилагается файл ehSimple.cpp, в котором вы найдете код установки
обработчика. Первый обработчик реализован в виде класса CatUnhandledExceptionFilter, объявленного следующим образом:
class
CatUnhandledExceptionFilter
{
private:
// SEHHandler oldHandler – переменная, в
которую будет записан адрес
//предыдущего обработчика исключения.
Объявление типа SEHHandler
// было приведено выше.
static SEHHandler oldHandler;
static void
zHookUpSEHChain(SEHHandler handler);
static int
myHandler(PEXCEPTION_RECORD pEhRecors, PEXCEPTION_REGISTRATION pEhRegRecord, PCONTEXT pContext, void* pp);
public:
Рекомендуем скачать другие рефераты по теме: онегин сочинение, реферат підприємство.