共用方式為


GetLastError 函式 (errhandlingapi.h)

擷取呼叫線程的最後一個錯誤碼值。 最後一個錯誤碼會根據每個線程維護。 多個線程不會覆寫彼此的最後一個錯誤碼。

Visual Basic: 應用程式應該呼叫 錯誤。LastDllError 而非 GetLastError

Syntax

_Post_equals_last_error_ DWORD GetLastError();

傳回值

傳回值是呼叫線程的最後一個錯誤碼。

每個函式的檔傳回值一節,這些函式設定最後一個錯誤碼會記下函式設定最後一個錯誤碼的條件。 大部分函式會在線程失敗時設定線程的最後一個錯誤碼。 不過,有些函式也會在成功時設定最後一個錯誤碼。 如果未記載函式來設定最後一個錯誤碼,則此函式傳回的值只是已設定的最新錯誤碼;某些函式會在成功時將最後一個錯誤碼設定為 0,而其他函式則不會。

備註

呼叫線程所執行的函式會藉由呼叫 SetLastError 函式來設定此值。 當函式的傳回值指出這類呼叫會傳回有用的數據時,您應該立即呼叫 GetLastError 函式。 這是因為某些函式會在成功時呼叫 SetLastError ,清除最近失敗函式所設定的錯誤碼。

若要取得系統錯誤碼的錯誤字串,請使用 FormatMessage 函式。 如需作業系統所提供的錯誤碼完整清單,請參閱 系統錯誤碼

函式傳回的錯誤碼不是 Windows API 規格的一部分,而且可能會因作業系統或裝置驅動程式而有所不同。 基於這個理由,我們無法提供每個函式可傳回之錯誤碼的完整清單。 還有許多函式,其檔甚至不包含可傳回的部分錯誤碼清單。

錯誤碼是32位值, (位31是最重要的位) 。 位 29 保留給應用程式定義的錯誤碼;沒有系統錯誤碼已設定這個位。 如果您要為應用程式定義錯誤碼,請將此位設定為一個。 這表示錯誤碼已由應用程式定義,並確保錯誤碼不會與系統所定義的任何錯誤碼衝突。

若要將系統錯誤轉換成 HRESULT 值,請使用 HRESULT_FROM_WIN32 宏。

範例

如需範例,請參閱 擷取 Last-Error 程序代碼

規格需求

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

另請參閱

錯誤處理函式

FormatMessage

HRESULT_FROM_WIN32

上次錯誤碼

SetLastError

SetLastErrorEx

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