Как остановить исключение процесса убийства в DLL?

Мое приложение C++ использует стороннюю DLL, которая предоставляет API для некоторого внешнего программного обеспечения. Здесь нет других вариантов. Это программное обеспечение, API и DLL, которые я должен использовать.

Я пытаюсь защитить свой интерфейс от бомб. Когда вызов API выходит из строя, DLL делает то, что сразу убивает весь процесс. Я обернул вызов в try / catch, я использую класс перевода SEH, который я успешно использовал в других проектах (и /EHa выбран), и я даже обрабатываю std:: непредвиденный. Ничего из этого не срабатывает. Как только я вызываю функцию DLL, процесс заканчивается.

На какие другие пути мне следует обратить внимание, чтобы защитить свой процесс? Я хочу избежать выделения дочернего процесса только для этого API.

1 ответ

Единственный надежный способ защитить себя от ошибки DLL API - это разветвить дочерний процесс и заставить этот процесс взаимодействовать с DLL (см. Firefox и plugin-container). Например, если DLL вызывает exit ничто, что вы делаете, не поймает это

Другие вопросы по тегам