SetUnhandledExceptionFilter 函式 (errhandlingapi.h)

可讓應用程式取代進程每個線程的最上層例外狀況處理程式。

呼叫此函式之後,如果在未偵錯的進程中發生例外狀況,但例外狀況會讓它變成未處理的例外狀況篩選條件,該篩選會呼叫 lpTopLevelExceptionFilter 參數所指定的例外狀況篩選函數。

語法

LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter(
  [in] LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter
);

參數

[in] lpTopLevelExceptionFilter

每當 UnhandledExceptionFilter 函式取得控件時,就會呼叫最上層例外狀況篩選函數的指標,而且進程不會進行偵錯。 此參數的 NULL 值會指定 UnhandledExceptionFilter 中的默認處理。

篩選函式的語法類似於 UnhandledExceptionFilter:它會採用類型 為 LPEXCEPTION_POINTERS的單一參數、具有 WINAPI 呼叫慣例,並傳回 LONG 類型的值。 篩選函式應該會傳回下列其中一個值。

意義
EXCEPTION_EXECUTE_HANDLER
0x1
UnhandledExceptionFilter 傳回並執行相關聯的例外狀況處理程式。 這通常會導致進程終止。
EXCEPTION_CONTINUE_EXECUTION
0xffffffff
UnhandledExceptionFilter 傳回,然後從例外狀況點繼續執行。 請注意,篩選函式可以藉由修改透過其 LPEXCEPTION_POINTERS 參數所提供的例外狀況資訊,來修改接續狀態。
EXCEPTION_CONTINUE_SEARCH
0x0
繼續進行 UnhandledExceptionFilter 的正常執行。 這表示遵守 SetErrorMode 旗標,或叫用應用程式錯誤快顯消息框。

傳回值

SetUnhandledExceptionFilter 函式會傳回使用 函式建立的先前例外狀況篩選的位址。 NULL 傳回值表示目前沒有最上層例外狀況處理程式。

備註

發出 SetUnhandledExceptionFilter 會取代呼叫進程中所有現有和所有未來線程的現有最上層例外狀況篩選。

lpTopLevelExceptionFilter 指定的例外狀況處理程式會在造成錯誤的線程內容中執行。 這可能會影響例外狀況處理程式從特定例外狀況復原的能力,例如無效的堆疊。

規格需求

   
最低支援的用戶端 Windows XP [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 errhandlingapi.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

結構化例外狀況處理函式

結構化例外狀況處理概觀

UnhandledExceptionFilter

VBS 記憶體保護區中可用的 Vertdll API