Вот проблема. Мое приложение вызывает CoCreateInstance()
для создания COM-объекта, реализованного в сторонней DLL. Эта DLL вызывает set_terminate()
для изменения обработчика terminate()
и передает туда свой собственный обработчик terminate()
.
Исходный адрес обработчика terminate()
не сохраняется этой библиотекой - он не заботится и просто меняет обработчик и никогда не восстанавливает его. Как только DLL выгружается, ее код больше не находится в памяти процесса, поэтому, если теперь вызывается terminate()
, программа запускает неопределенное поведение.
Я бы хотел получить и сохранить адрес исходного обработчика terminate()
, чтобы иметь возможность его восстановить. Как я могу это сделать?