報告攔截函式
這個主題適用於:
版本 |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
僅適用原生 |
||||
Pro、Premium 和 Ultimate |
僅適用原生 |
報告攔截函式,使用 _CrtSetReportHook 安裝,會在每次 _CrtDbgReport 產生偵錯報告時呼叫。 除此之外,您可以使用它來篩選報告以專注於特定類型的配置。 報告攔截函式應該有像下列的原型:
int YourReportHook(int nRptType, char *szMsg, int *retVal);
您傳入至 _CrtSetReportHook 的指標是在 CRTDBG.H 裡 _CRT_REPORT_HOOK 定義的類型:
typedef int (__cdecl *_CRT_REPORT_HOOK)(int, char *, int *);
當執行階段程式庫呼叫攔截函式時,nRptType 引數包含報告的分類 (_CRT_WARN、_CRT_ERROR 或 _CRT_ASSERT),szMsg 包含完整重組報告訊息字串的指標,而 retVal 指定 _CrtDbgReport 是否應該在產生報告或啟動偵錯工具繼續照常執行 (retVal 值為零時會繼續執行,值為 1 時會啟動偵錯工具)。
如果攔截能完整處理該訊息,而不需要進一步的報告,它應該就會傳回 TRUE。 如果它傳回的是 FALSE,_CrtDbgReport 會以一般方式報告訊息。