Windows核心程式設計第一章 錯誤處理

2022-03-20 20:00:32 字數 1400 閱讀 5639

不管是做逆向,開始做開發.在windows下.你都需要看一下核心程式設計這本書.這本書確實寫得很好.所以自己在學習這本書的同時,也把自己所學的知識進行 總結,以及鞏固.

資料型別 作用

void 	如果是void表示函式不可能失敗.極少數windows函式會返回void

bool 表示這個函式會有失敗情況.0失敗.否則就是非0.但是一般都會使用true false來判斷.

handle windows中的控制代碼型別.返回值同創為null.否則的話handle將標識乙個可以操縱的物件.有些函式會返回invalid_handle_value來表示

具體要檢視msdn文件看看對函式的返回值要求.

pvoid 如果失敗返回null,否則將會是乙個void *的位址.

long/dword 這種型別也很多.返回值通常是乙個long(long)型別或者dword(unsigned int)型別的值.如果返回值是這兩個.那麼要仔細檢查出現的錯誤.

錯誤**獲取是乙個windows提供的api函式.

函式名稱/圓形 作用

dword winapi getlasterror(void)

返回值: 返**用執行緒之後的錯誤**呼叫成功則返回error_sucess

void winapi setlasterror(

_in_ dword dwerrcode

); 傳入乙個dword錯誤值進行設定

dword formatmessage(

dword dwflags,

lpcvoid lpsource,

dword dwmessageid,

dword dwlanguageid, lptstr lpbuffer, dword nsize, va_list *arguments );

根據getlasterror獲取的錯誤**值.進行格式化輸出.自動匹配錯誤碼代表的意思.

如果你使用vc++或者vs編譯器,你可以在監視視窗輸入@err,hr這個命令.那麼程式在除錯的時候會自動獲取api的錯誤**.

如果呼叫的api沒有錯誤,就是返回0也就是說error_sucess否則則就會返回錯誤**.這個錯誤**可以用工具檢視.

當然,你可以查詢msdn. msdn上有介紹getlasterror配合formatmessage來列印錯誤**.

vs編譯器還提供了了錯誤**檢視工具.我們可以輸入那麼就會顯示錯誤**代表的什麼意思.

vs2013 - 工具 - 錯誤查詢

如下圖所示:

windows 核心程式設計 第一章學習筆記

windows 核心程式設計第五版 第一章 錯誤處理 1.呼叫系統api時候仔細檢視msdn返回值含義。2.函式呼叫失敗後,可以立即呼叫 getlasterror來檢視錯誤碼。3.可以利用visual studio 自帶工具 error lookup 來檢視錯誤碼對應的含義。4.在除錯的時候在wat...

程式設計珠璣第一章

原文中的問題 如何在1mb的空間裡面對一千萬個整數進行排序?並且每個數都小於1千萬。實際上這個需要1.25mb的記憶體空間。1mb總共有838,8608。所以估計也可以在1mb左右的空間裡面進行排序了。include include define bitsperword 32 define shif...

第一章 C 程式設計

今天終於下定決心將資料結構與演算法重新在複習一遍,先是c 的一些比較容易忘記的特性簡單的溫習一遍 包括遞迴呼叫,異常操作,類模板,函式模板等等,這三天寫得原始碼如下 book name c structure and algorithm filename chapter1.cpp version 1...