Что именно является "определяемым приложением" в UnhandledExceptionFilter?
MSDN описываетUnhandledExceptionFilter
следующим образом: "Определенная приложением функция, которая передает необработанные исключения отладчику, если процесс отлаживается".
Но эта функция явно предоставляется операционной системой в kernel32.dll в соответствии с той же страницей.
Так почему же они называют это определяемой приложением функцией?
2 ответа
Да, очень неловкий язык. Это определение прототипа функции. Который вы можете использовать с ключевым словом __except или в качестве аргумента для SetUnhandledExceptionFilter(). Любой из них сделает вашу функцию определенной приложением.
Существует обработка по умолчанию, если вы не сделаете ни того, ни другого, отладчик автоматически останавливается на необработанном исключении. Я полагаю, что они имели в виду под "тем, что передает исключения отладчику". Документы SDK для SEH заслуживают всесторонней оценки.
UnhandledExceptionFilter() сама по себе не является собственной функцией, предоставляемой ядром (хотя ядро реализует свою собственную реализацию по умолчанию, которая используется, пока вы не переопределите ее своей собственной). В документации UnhandledExceptionFilter(), которую вы цитируете, описывается прототип функции, которому вы должны следовать, если решите реализовать свою собственную функцию и передать ее в функцию SetUnhandledExceptionFilter(), чтобы активировать ее в ядре.