讀Windows核心編程 - 1

        當調用一個Windows函數失敗,可以用DWORD GetLastError(); 返回該線程的32位錯誤代碼。WinError.h頭文件中包含了Microsoft公司定義的錯誤代碼列表。每一個錯誤代碼包含消息ID(ERROR_PATH_NOT_FOUND),消息文本和一個號碼(0L、1L)三部分。當Windows函數運行失敗時,應該立即調用GetLastError函數,如果調用了另一個Windows函數,返回值可能被修改。

        從系統內部來說,當一個Windows函數檢測到一個錯誤時,它會使用一個稱爲線程本地存儲器的機制,將相應的錯誤代碼號碼與調用的線程關聯起來。(線程本地存儲器在21章中描述)

        在vc6.0中,可以在watch窗口中輸入@err,hr得到錯誤代碼的英文描述,當Windows函數調用失敗時不需要調用GetLastError即可在watch窗口中看見相應的錯誤描述。還可以利用FormatMessage函數將錯誤代碼轉化爲文本描述,在創建向用戶顯示的字符串信息時,它是首選函數。

        也可以定義自己的錯誤代碼,用VOID SetLastError(DWORD dwErrCode)實現。錯誤代碼是個32位的數字,可以劃分爲五個域。這些域在24章中詳細講述。

發佈了25 篇原創文章 · 獲贊 0 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章