Рефераты | Рефераты по информатике, программированию | Централизованная обработка исключений | страница реферата 6 | Большая Энциклопедия Рефератов от А до Я
Большая Энциклопедия Рефератов от А до Я
  • Рефераты, курсовые, шпаргалки, сочинения, изложения
  • Дипломы, диссертации, решебники, рассказы, тезисы
  • Конспекты, отчеты, доклады, контрольные работы

  • Вызов эту функции после начала выполнения функции main покажет, что к моменту выполнения функции main в списке обработчиков уже зарегистрированы два обработчика. Текущий обработчик, как было показано раньше, установлен библиотекой Runtime. А вот последний установлен системой.

    Exception Registration chain:

     Current SEH record: 0x12FFB0

     Prev SEH Record: 0x12FFE0

     Handler: 0x41123A

     Current SEH record: 0x12FFE0

     Prev SEH Record: 0xFFFFFFFF

     Handler: 0x77E94809

    Как вы, наверное, уже догадались, создавать свой обработчик и располагать его за системным нет никакого смысла, поскольку исключение будет обработано в runtime-библиотеке, и приложение будет завершено. Тогда я попытался создать свой обработчик и расположил информацию о нем перед обработчиком runtime-библиотеки, выделив для него место в динамической памяти, но увы, мое приложение просто было выгружено из памяти после возникновения исключения, а вставленный обработчик не был выполнен. Как оказалось, так делать нельзя потому, что все записи списка обработчиков исключений должны лежать в стеке, причем каждая следующая запись должна быть расположена выше предыдущей.

    Итак, нельзя расположить информацию об обработчике перед информацией о runtime-обработчике. Но никто не мешает переписать значение поля hander обработчика runtime-библиотеки, установив его так, чтобы он указывал на нашу функцию. Код, который реализует это, приведен ниже.

    void zHookUpSEHChain(SEHHandler handler)

    {

     _EXCEPTION_REGISTRATION * pVCExcRec;

     __asm mov eax, FS:[0]

     __asm mov [pVCExcRec], EAX

     // Перебираем блоки в связанном списке. 0xFFFFFFFF означает конец списка.

     while (0xFFFFFFFF != (unsigned)(UINT_PTR)pVCExcRec)


    Рекомендуем скачать другие рефераты по теме: онегин сочинение, реферат підприємство.



    Предыдущая страница реферата | 1  2  3  4  5  6  7  8  9  10  11 |




    Поделитесь этой записью или добавьте в закладки

       




    Категории:



    Разделы сайта




    •