不管是做逆向,開始做開發.在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...