Что именно является "определяемым приложением" в UnhandledExceptionFilter?

MSDN описываетUnhandledExceptionFilter следующим образом: "Определенная приложением функция, которая передает необработанные исключения отладчику, если процесс отлаживается".

Но эта функция явно предоставляется операционной системой в kernel32.dll в соответствии с той же страницей.

Так почему же они называют это определяемой приложением функцией?

2 ответа

Решение

Да, очень неловкий язык. Это определение прототипа функции. Который вы можете использовать с ключевым словом __except или в качестве аргумента для SetUnhandledExceptionFilter(). Любой из них сделает вашу функцию определенной приложением.

Существует обработка по умолчанию, если вы не сделаете ни того, ни другого, отладчик автоматически останавливается на необработанном исключении. Я полагаю, что они имели в виду под "тем, что передает исключения отладчику". Документы SDK для SEH заслуживают всесторонней оценки.

UnhandledExceptionFilter() сама по себе не является собственной функцией, предоставляемой ядром (хотя ядро ​​реализует свою собственную реализацию по умолчанию, которая используется, пока вы не переопределите ее своей собственной). В документации UnhandledExceptionFilter(), которую вы цитируете, описывается прототип функции, которому вы должны следовать, если решите реализовать свою собственную функцию и передать ее в функцию SetUnhandledExceptionFilter(), чтобы активировать ее в ядре.

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