Windows處理錯誤靠的是API的回傳值,型別不止一種種:
- VOID,函式不可能失敗,Windows API的回傳值很少是這個情況,
- BOOL,如果函式失敗,則回傳值是0,否則回傳是非零值,不要測驗回傳值是否為TRUE!
- HANDLE,如果函式失敗,則回傳值通常是NULL,否則回傳一個HANDLE用于操作物件,有的函式是回傳INVALID_HANDLE_VALUE的,它被定義為-1,以函式在檔案中的說明為標準!
- PVOID,如果函式失敗,則回傳NULL,否則回傳記憶體塊的地址,
- LONG/DWORD,比較麻煩,某些情況下,函式無法對想要計數的物件計數,則回傳值通常是0或者-1,為了處理潛在的錯誤,必須認真閱讀SDK檔案中的說明,
當Windows函式檢測到一個錯誤的時候,會使用執行緒本地存盤的機制,關聯錯誤代碼和呼叫函式的執行緒,這樣就可以保證執行緒不會影響各自的錯誤代碼,
而確定這個錯誤的方法就是呼叫GetLastError函式,它只回傳一個DWORD型別的錯誤代碼,
當你擁有這個錯誤代碼后,必須將號碼轉化成更有用的物件,這里可以根據頭檔案WinError.h中定義的錯誤代碼串列來處理,
示例程式可以參照VS的一個小工具Error Lookup,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/49372.html
標籤:C
下一篇:802.11 MAC基礎
