Мое приложение на C ++ использует стороннюю DLL, которая предоставляет API для некоторого внешнего программного обеспечения. Здесь нет других вариантов. Это программное обеспечение, API и DLL, которые я должен использовать.
Я пытаюсь защитить свой интерфейс от бомб. Когда вызов API выходит из строя, DLL делает то, что сразу убивает весь процесс. Я обернул вызов в try / catch, я использую класс перевода SEH, который я успешно использовал в других проектах (и / EHa выбран), и я даже обрабатываю std :: непредвиденный. Ничего из этого не срабатывает. Как только я вызываю функцию DLL, процесс заканчивается.
На какие другие пути я должен обратить внимание, чтобы защитить свой процесс? Я хочу избежать выделения дочернего процесса только для этого API.
только Безошибочный способ защитить себя от ошибки DLL API — это запустить дочерний процесс и заставить этот процесс взаимодействовать с DLL (см. firefox и plugin-container). Например, если DLL вызывает exit
ничто, что вы делаете, не поймает это.