❶ 《Windows核心編程(第5版)微軟技術叢書》pdf下載在線閱讀,求百度網盤雲資源
《Windows核心編程》(Jeffrey Richter)電子書網盤下載免費在線閱讀
鏈接:
書名:Windows核心編程
作者:Jeffrey Richter
豆瓣評分:9.2
出版社:人民郵電出版社
出版年份:2008-8
頁數:820
內容簡介:
【內容簡介】
本書是Windows 程序設計領域的名著,涵蓋了Windows 的最新版本Vista 以及Windows XP 的最新內容。書中全面深入地介紹了Windows 的各種基本要素,如進程、線程池、虛擬內存、DLL、設備I/O 和SEH 等,並列舉了大量應用程序,精闢地分析了要素的使用方法。.
本書適於各層次Windows 編程人員閱讀。 ...
【目錄信息】
Acknowledgments . xxi
Introction xxiii
64-Bit Windows xxiii
What』s New in the Fifth Edition xxiv
Code Samples and System Requirements xxvi
Support for This Book xxvi
Questions and Comments xxvi
Part I Required Reading
1 Error Handling 3
Defining Your Own Error Codes 7
The ErrorShow Sample Application 7
2 Working with Characters and Strings 11
Character Encodings 12
ANSI and Unicode Character and String Data Types 13
Unicode and ANSI Functions in Windows 15
Unicode and ANSI Functions in the C Run-Time Library 17
Secure String Functions in the C Run-Time Library 18
Introcing the New Secure String Functions 19
How to Get More Control When Performing String Operations 22
<< 查看詳細目錄
作者簡介:
Jeffrey Richter全球享有盛譽的微軟技術專家,著名技術咨詢和培訓公司Wintellect創始人之一,MSDN Magazine雜志特邀編輯。多年來,他擔任微軟各開發團隊顧問,參與了微軟的許多關鍵產品包括各版本Windows、Visual Studio、Microsoft Offce和.NET框架的設計和編程。他撰寫了一系列著作,包括本書和《深入理解.NET》(第2版·英文版,人民郵電出版社。2008),都堪稱技術圖書的典範,影響了一代Windows程序員,並因此榮獲微軟公司杜區最高技術榮譽「微軟軟體傳奇人物」(Software Legend)稱號。
❷ 求 《windows 核心編程(第五版)( windows via c/c++ )》的書中的例子的代碼
看了你的描述,再結合我的臨床經驗,確診你的病叫慢性濕疹,主要表現是雙腳勃皮膚色暗,乾燥,粗糙,脫皮,晚上瘙癢難忍。患處的皮損會慢慢的擴大,這病可以治癒,需要幾個月的時間用葯。
綪寀納 一②3四⑤陸
❸ 誰知道<<WINDOWS核心編程>>第5版的目錄,微軟強人寫的
目 錄
譯者序
前言
第一部分 程序員必讀
第1章 對程序錯誤的處理 1
1.1 定義自己的錯誤代碼 4
1.2 ErrorShow示例應用程序 5
第2章 Unicode 11
2.1 字元集 11
2.1.1 單位元組與雙位元組字元集 11
2.1.2 Unicode:寬位元組字元集 12
2.2 為什麼使用Unicode 13
2.3 Windows 2000與Unicode 13
2.4 Windows 98與Unicode 13
2.5 Windows CE與Unicode 14
2.6 需要注意的問題 14
2.7 對COM的簡單說明 14
2.8 如何編寫Unicode源代碼 15
2.8.1 C運行期庫對Unicode的支持 15
2.8.2 Windows定義的Unicode數據類型 17
2.8.3 Windows中的Unicode函數和ANSI
函數 17
2.8.4 Windows字元串函數 19
2.9 成為符合ANSI和Unicode的應用程序 19
2.9.1 Windows字元串函數 19
2.9.2 資源 22
2.9.3 確定文本是ANSI文本還是Unicode
文本 22
2.9.4 在Unicode與ANSI之間轉換字元串 23
第3章 內核對象 27
3.1 什麼是內核對象 27
3.1.1 內核對象的使用計數 27
3.1.2 安全性 28
3.2 進程的內核對象句柄表 30
3.2.1 創建內核對象 30
3.2.2 關閉內核對象 32
3.3 跨越進程邊界共享內核對象 32
3.3.1 對象句柄的繼承性 32
3.3.2 改變句柄的標志 35
3.3.3 命名對象 36
3.3.4 終端伺服器的名字空間 39
3.3.5 復制對象句柄 39
第二部分 編程的具體方法
第4章 進程 45
4.1 編寫第一個Windows應用程序 46
4.1.1 進程的實例句柄 49
4.1.2 進程的前一個實例句柄 50
4.1.3 進程的命令行 50
4.1.4 進程的環境變數 51
4.1.5 進程的親緣性 54
4.1.6 進程的錯誤模式 54
4.1.7 進程的當前驅動器和目錄 54
4.1.8 進程的當前目錄 55
4.1.9 系統版本 56
4.2 CreateProcess函數 58
4.2.1 pszApplicationName和
pszCommandLine 59
4.2.2 psa Process、psa Thread和
binherit Handles 60
4.2.3 fdwCreate 62
4.2.4 pvEnvironment 64
4.2.5 pszCurDir 64
4.2.6 psiStartInfo 64
4.2.7 ppiProcInfo 67
4.3 終止進程的運行 69
4.3.1 主線程的進入點函數返回 69
4.3.2 ExitProcess函數 69
4.3.3 TerminateProcess函數 70
4.3.4 進程終止運行時出現的情況 71
4.4 子進程 72
4.5 枚舉系統中運行的進程 73
第5章 作業 91
5.1 對作業進程的限制 93
5.2 將進程放入作業 99
5.3 終止作業中所有進程的運行 99
5.4 查詢作業統計信息 100
5.5 作業通知信息 103
5.6 JobLab示例應用程序 104
第6章 線程的基礎知識 121
6.1 何時創建線程 121
6.2 何時不能創建線程 122
6.3 編寫第一個線程函數 123
6.4 CreateThread函數 124
6.4.1 psa 124
6.4.2 cbStack 124
6.4.3 pfnStartAddr和pvParam 125
6.4.4 fdwCreate 126
6.4.5 pdwThreadID 126
6.5 終止線程的運行 127
6.5.1 線程函數返回 127
6.5.2 ExitThread函數 127
6.5.3 TerminateThread函數 127
6.5.4 在進程終止運行時撤消線程 128
6.5.5 線程終止運行時發生的操作 128
6.6 線程的一些性質 129
6.7 C/C++運行期庫的考慮 131
6.7.1 Oops—錯誤地調用了Create Thread 138
6.7.2 不應該調用的C/C++運行期庫函數 138
6.8 對自己的ID概念應該有所了解 139
第7章 線程的調度、優先順序和親緣性 142
7.1 暫停和恢復線程的運行 143
7.2 暫停和恢復進程的運行 144
7.3 睡眠方式 145
7.4 轉換到另一個線程 145
7.5 線程的運行時間 146
7.6 運用環境結構 148
7.7 線程的優先順序 152
7.8 對優先順序的抽象說明 153
7.9 程序的優先順序 156
7.9.1 動態提高線程的優先順序等級 158
7.9.2 為前台進程調整調度程序 159
7.9.3 Scheling Lab示例應用程序 160
7.10 親緣性 167
第8章 用戶方式中線程的同步 172
8.1 原子訪問:互鎖的函數家族 172
8.2 高速緩存行 177
8.3 高級線程同步 178
8.4 關鍵代碼段 180
8.4.1 關鍵代碼段准確的描述 182
8.4.2 關鍵代碼段與循環鎖 185
8.4.3 關鍵代碼段與錯誤處理 185
8.4.4 非常有用的提示和技巧 186
第9章 線程與內核對象的同步 190
9.1 等待函數 191
9.2 成功等待的副作用 194
9.3 事件內核對象 195
9.4 等待定時器內核對象 204
9.4.1 讓等待定時器給APC項排隊 207
9.4.2 定時器的鬆散特性 209
9.5 信標內核對象 210
9.6 互斥對象內核對象 211
9.6.1 釋放問題 213
9.6.2 互斥對象與關鍵代碼段的比較 214
9.6.3 Queue示例應用程序 214
9.7 線程同步對象速查表 223
9.8 其他的線程同步函數 224
9.8.1 非同步設備I/O 224
9.8.2 WaitForInputIdle 224
9.8.3 MsgWaitForMultipleObjects (Ex) 225
9.8.4 WaitForDebugEvent 225
9.8.5 SingleObjectAndWait 226
第10章 線程同步工具包 228
10.1 實現關鍵代碼段:Optex 228
10.2 創建線程安全的數據類型和反信標 239
10.3 單個寫入程序/多個閱讀程序的保護 251
10.4 實現一個WaitForMultipleExpressions
函數 259
第11章 線程池的使用 274
11.1 方案1:非同步調用函數 275
11.2 方案2:按規定的時間間隔調用函數 277
11.3 方案3:當單個內核對象變為已通知狀態
時調用函數 283
11.4 方案4:當非同步I/O請求完成運行時調用
函數 285
第12章 纖程 287
12.1 纖程的操作 287
12.2 Counter示例應用程序 289
第三部分 內 存 管 理
第13章 Windows的內存結構 299
13.1 進程的虛擬地址空間 299
13.2 虛擬地址空間如何分區 300
13.2.1 NuLL 指針分配的分區—適用於
Windows 2000和Windows 98 300
13.2.2 MS-DOS/16位Windows 應用程序兼容
分區—僅適用於Windows 98 301
13.2.3 用戶方式分區—適用於Windows 2000
和Windows 98 301
13.2.4 64 KB禁止進入的分區—僅適用
於Windows 2000 302
13.2.5 共享的MMF分區—僅適用於
Windows 98 303
13.2.6 內核方式分區—適用於Windows
2000和Windows 98 303
13.3 地址空間中的區域 303
13.4 提交地址空間區域中的物理存儲器 304
13.5 物理存儲器與頁文件 304
13.6 保護屬性 307
13.6.1 Copy-On-Write 訪問 308
13.6.2 特殊的訪問保護屬性的標志 309
13.7 綜合使用所有的元素 309
13.7.1 區域的內部情況 312
13.7.2 與Windows 98地址空間的差別 315
13.8 數據對齊的重要性 319
第14章 虛擬內存 323
14.1 系統信息 323
14.2 虛擬內存的狀態 330
14.3 確定地址空間的狀態 336
14.3.1 VMQuery函數 337
14.3.2 虛擬內存表示例應用程序 343
第15章 在應用程序中使用虛擬內存 354
15.1 在地址空間中保留一個區域 354
15.2 在保留區域中的提交存儲器 355
15.3 同時進行區域的保留和內存的提交 356
15.4 何時提交物理存儲器 357
15.5 回收虛擬內存和釋放地址空間區域 358
15.5.1 何時回收物理存儲器 359
15.5.2 虛擬內存分配的示例應用程序 360
15.6 改變保護屬性 368
15.7 清除物理存儲器的內容 369
15.8 地址窗口擴展—適用於
Windows 2000 372
第16章 線程的堆棧 385
16.1 Windows 98下的線程堆棧 387
16.2 C/C++運行期庫的堆棧檢查函數 389
16.3 Summation示例應用程序 390
第17章 內存映射文件 397
17.1 內存映射的可執行文件和DLL
文件 397
17.1.1 可執行文件或DLL的多個實例
不能共享靜態數據 398
17.1.2 在可執行文件或DLL的多個實
例之間共享靜態數據 400
17.1.3 AppInst示例應用程序 404
17.2 內存映射數據文件 409
17.2.1 方法 1:一個文件,一個緩存 409
17.2.2 方法 2:兩個文件,一個緩存 409
17.2.3 方法 3:一個文件,兩個緩存 410
17.2.4 方法 4:一個文件,零緩存 410
17.3 使用內存映射文件 410
17.3.1 步驟 1:創建或打開文件內核
對象 411
17.3.2 步驟 2:創建一個文件映射內核
對象 412
17.3.3 步驟 3:將文件數據映射到進程
的地址空間 414
17.3.4 步驟4:從進程的地址空間中撤消
文件數據的映像 416
17.3.5 步驟 5和步驟 6:關閉文件映射對象
和文件對象 417
17.3.6 文件倒序示例應用程序 418
17.4 使用內存映射文件來處理大文件 426
17.5 內存映射文件與數據視圖的相關性 427
17.6 設定內存映射文件的基地址 428
17.7 實現內存映射文件的具體方法 429
17.8 使用內存映射文件在進程之間共享
數據 431
17.9 頁文件支持的內存映射文件 431
17.10 稀疏提交的內存映射文件 438
第18章 堆棧 451
18.1 進程的默認堆棧 451
18.2 為什麼要創建輔助堆棧 452
18.2.1 保護組件 452
18.2.2 更有效的內存管理 453
18.2.3 進行本地訪問 453
18.2.4 減少線程同步的開銷 453
18.2.5 迅速釋放堆棧 453
18.3 如何創建輔助堆棧 454
18.3.1 從堆棧中分配內存塊 455
18.3.2 改變內存塊的大小 456
18.3.3 了解內存塊的大小 456
18.3.4 釋放內存塊 457
18.3.5 撤消堆棧 457
18.3.6 用C++程序來使用堆棧 457
18.4 其他堆棧函數 460
第四部分 動態鏈接庫
第19章 DLL基礎 463
19.1 DLL與進程的地址空間 464
19.2 DLL的總體運行情況 465
19.3 創建DLL模塊 467
19.3.1 輸出的真正含義是什麼 469
19.3.2 創建用於非Visual C++工具
的DLL 471
19.4 創建可執行模塊 472
19.5 運行可執行模塊 474
第20章 DLL的高級操作技術 477
20.1 DLL模塊的顯式載入和
符號鏈接 477
20.1.1 顯式載入DLL模塊 478
20.1.2 顯式卸載DLL模塊 479
20.1.3 顯式鏈接到一個輸出符號 480
20.2 DLL的進入點函數 481
20.2.1 DLL_PROCESS_ATTACH通知 482
20.2.2 DLL_PROCESS_DETACH通知 483
20.2.3 DLL_THREAD_ATTACH通知 485
20.2.4 DLL_THREAD_DETACH通知 485
20.2.5 順序調用DllMain 486
20.2.6 DllMain與C/C++運行期庫 488
20.3 延遲載入DLL 489
20.4 函數轉發器 499
20.5 已知的DLL 499
20.6 DLL轉移 500
20.7 改變模塊的位置 501
20.8 綁定模塊 506
第21章 線程本地存儲器 509
21.1 動態TLS 509
21.2 靜態TLS 513
第22章 插入DLL和掛接API 515
22.1 插入DLL:一個例子 515
22.2 使用注冊表來插入DLL 517
22.3 使用Windows掛鉤來插入DLL 518
22.4 使用遠程線程來插入DLL 531
22.4.1 Inject Library 示例應用程序 534
22.4.2 Image Walk DLL 541
22.5 使用特洛伊DLL來插入DLL 544
22.6 將DLL作為調試程序來插入 544
22.7 用Windows 98上的內存映射文件
插入代碼 544
22.8 用CreateProcess插入代碼 544
22.9 掛接API的一個示例 545
22.9.1 通過改寫代碼來掛接API 546
22.9.2 通過操作模塊的輸入節來掛接API 546
22.9.3 LastMsgBoxInfo示例應用程序 549
第五部分 結構化異常處理
第23章 結束處理程序 565
23.1 通過例子理解結束處理程序 566
23.2 Funcenstein1 566
23.3 Funcenstein2 566
23.4 Funcenstein3 568
23.5 Funcfurter1 568
23.6 突擊測驗:FuncaDoodleDoo 569
23.7 Funcenstein4 570
23.8 Funcarama1 571
23.9 Funcarama2 572
23.10 Funcarama3 572
23.11 Funcarama4:最終的邊界 573
23.12 關於finally塊的說明 574
23.13 Funcfurter2 575
23.14 SEH結束處理示常式序 576
第24章 異常處理程序和軟體異常 578
24.1 通過例子理解異常過濾器和異常處理
程序 578
24.1.1 Funcmeister1 578
24.1.2 Funcmeister2 579
24.2 EXCEPTION_EXECUTE_HANDLER 580
24.2.1 一些有用的例子 581
24.2.2 全局展開 583
24.2.3 暫停全局展開 585
24.3 EXCEPTION_CONTINUE_
EXECUTION 586
24.4 EXCEPTION_CONTINUE_
SEARCH 588
24.5 Get Exception Code 589
24.6 Get Exception Information 592
24.7 軟體異常 595
第25章 未處理異常和C++異常 598
25.1 即時調試 600
25.2 關閉異常消息框 601
25.2.1 強制進程終止運行 601
25.2.2 包裝一個線程函數 601
25.2.3 包裝所有的線程函數 601
25.2.4 自動調用調試程序 602
25.3 程序員自己調用UnhandledException
Filter 602
25.4 UnhandledExceptionFilter函數的一些
細節 603
25.5 異常與調試程序 604
25.6 C++異常與結構性異常的對比 618
第六部分 窗 口
第26章 窗口消息 623
26.1 線程的消息隊列 623
26.2 將消息發送到線程的消息隊列中 625
26.3 向窗口發送消息 626
26.4 喚醒一個線程 630
26.4.1 隊列狀態標志 630
26.4.2 從線程的隊列中提取消息的
演算法 631
26.4.3 利用內核對象或隊列狀態標
志喚醒線程 634
26.5 通過消息發送數據 636
26.6 Windows如何處理ANSI/Unicode
字元和字元串 642
第27章 硬體輸入模型和局部輸入狀態 645
27.1 原始輸入線程 645
27.2 局部輸入狀態 646
27.2.1 鍵盤輸入與焦點 647
27.2.2 滑鼠游標管理 649
27.3 將虛擬輸入隊列同局部輸入狀態掛接
在一起 651
27.3.1 LISLab 示常式序 652
27.3.2 LISWatch 示常式序 666
第七部分 附 錄
附錄A 建立環境 675
附錄B 消息分流器、子控制項宏和API宏 686
❹ windows 核心編程第四章中的一段代碼,我不能正確編譯,請幫我看看什麼問題,急急急!!!!!
日文不懂,不過意思猜到是:錯誤: unresolved external symbol _main
原因是你的你的程序類型和入口函數不匹配,編譯器根據類型在查找它認為的入口函數main,而你給出的是WinMain,他不認識。
解決方案:
1.試試看在[Project] --> [Settings] --> 選擇"Link"屬性頁,在Project Options中將/subsystem:console改成/subsystem:windows
2.或者用向導建立一個windows程序,把你的代碼粘過去覆蓋原來的WinMain函數
3.或者把你的WinMain改成main試試看
❺ 關於windows核心編程中IAT修改的那段代碼
++++++++++++++
❻ windows核心編程為什麼使用c++
最簡單的回答:因為C++最適合於操作系統的核心功能的編寫。
------------以下是一些相關常識,僅供參考---------
1、編程語言從貼近機器去分,一般分高級編程語言和低級編程語言。
2、低級編程語言其實很少的,基本上就是匯編的代名詞,當然還有更低級的,那就是機器碼直接編程了。
3、機器碼編程基本上是不靠譜的,沒人能把一群的數字記在腦里並進行五花八門的組合。
4、匯編是最貼近機器代碼的,它的一個指令基本上就對應著機器碼的一個指令,所以,從理論上說,它能發揮出機器的最高性能、最多功能。但是,這只是理論上,事實上,如果純它用,將完全不能發揮機器的最高性能因為當前的計算機技術下,沒有任何一個人,沒有任何一個團隊能用匯編去完成一個稍微復雜一點點兒的功能。在當前,匯編僅應用於特定介面工作的開發,以及一些高級語言不能或不便完成的代碼編寫。
5、所以,在近現代的計算機技術中,編程工作主要還是要由高級編程語言去完成,編寫完後,由編譯器進行轉譯成計算機能夠執行的機器碼,或機算機能依託某種軟體應用環境邊解釋成機器碼邊執行的中間碼。當然,也存在一些根本就不轉譯,直接在環境中,邊解釋邊執行(比如JAVA就是典型的)。
6、C++這個語系對內存地址可以進行直接的操作,包括讀、寫,這種動作類似於直接向機器發出指令。所以,C++在高級語言中相對來說是比較貼近機器的。而且C++的幾個編程環境編寫出的程序是真正譯成機器碼的,可以不依託「運行環境」讓計算機依要求動作。當然,有這個特點的不只是C++,還有別的語系,比如使用Pasic系的Delphi編程環境。不過,C++的更傳統用戶群更多,而且簡潔自由(有時自由過頭,故障排查相對難),得到了更多專業人員的喜愛。
❼ 怎麼學習《windows核心編程》
不要一開始就學這一本書,這是給高手學的,
如果你剛學完數據結構就學這本書是沒法看懂的,
我的建議是,先看<<windows程序設計>>這本書,現在好像已經出到第五版了。
剛開始學的時候不需要看懂全部,只需要看懂前面的消息機制(一定要看懂),
然後自己能照著書中的代碼寫出一個窗口就行了(不用記住代碼,但至少你要能把代碼輸入好,並編譯完成,程序運行正常,到這,這本書可以先放下,當然,後面的能囈懂最好能看下去,不能看懂,也要瀏覽一下,知道大概講的什麼,。
然後去下載 孫鑫的<<VC++從入門到精通>>的視頻,看完後再回頭看<<windows程序設計>>
看破完後你就可以看<<windows核心編程>>了
當然,就要很久的時間,我就用了差不多一年
❽ Windows 核心編程的目錄
第1部分 必備知識
第1章 錯誤處理
1.1 定義自己的錯誤代碼
1.2 ErrorShow示常式序
第2章 字元和字元串處理
2.1 字元編碼
2.2 ANSI字元和Unicode字元與字元串數據類型
2.3 Windows中的Unicode函數和ANSI函數
2.4 C運行庫中的Unicode函數和ANSI函數
2.5 C運行庫中的安全字元串函數
2.5.1 初識新的安全字元串函數
2.5.2 在處理字元串時如何獲得更多控制
2.5.3 Windows字元串函數
2.6 為何要用Unicode
2.7 推薦的字元和字元串處理方式
2.8 Unicode與ANSI字元串轉換
2.8.1 導出ANSI和Unicode DLL函數
2.8.2 判斷文本是ANSI還是Unicode
第3章 內核對象
3.1 何為內核對象
3.1.1 使用計數
3.1.2 內核對象的安全性
3.2 進程內核對象句柄表
3.2.1 創建一個內核對象
3.2.2 關閉內核對象
3.3 跨進程邊界共享內核對象
3.3.1 使用對象句柄繼承
3.3.2 改變句柄的標志
3.3.3 為對象命名
3.3.4 終端服務命名空間
3.3.5 專有命名空間
3.3.5 復制對象句柄
第Ⅱ部分 工作機制
第4章 進程
4.1 編寫第一個Windows應用程序
4.1.1 進程實例句柄
4.1.2 進程前一個實例的句柄
4.1.3 進程的命令行
4.1.4 進程的環境變數
4.1.5 進程的關聯性
4.1.6 進程的錯誤模式
4.1.7 進程當前所在的驅動器和目錄
4.1.8 進程的當前目錄
4.1.9 系統版本
4.2 CreateProcess函數
4.2.1 pszApplicationName和pszCommandLine參數
4.2.2 psaProcess,psaThread和bInheritHandles參數
4.2.3 fdwCreate參數
4.2.4 pvEnvironment參數
4.2.5 pszCurDir參數
4.2.6 psiStartInfo參數
4.2.7 ppiProcInfo參數
4.3 終止進程
4.3.1 主線程的入口點函數返回
4.3.2 ExitProcess函數
4.3.3 TerminateProcess函數
4.3.4 當進程中的所有線程終止時
4.3.5 當進程終止運行時
4.4 子進程
4.5 管理員以標准用戶許可權運行時
4.5.1 自動提升進程的許可權
4.5.2 手動提升進程的許可權
4.5.3 何為當前許可權上下文
4.5.4 枚舉系統中正在運行的進程
4.5.5 Process Information示常式序
第5章 作業
5.1 對作業中的進程施加限制
5.2 將進程放入作業中
5.3 終止作業中的所有線程查詢作業統計信息
5.4 作業通知
5.6 Job Lab示常式序
第6章 線程基礎
6.1 何時創建線程
6.2 何時不應該創建線程
6.3 編寫第一個線程函數
6.4 CreateThread函數
6.4.1 psa參數
6.4.2 cbStackSize參數
6.4.3 pfnStartAddr和pvParam參數
6.4.4 dwCreateFlags
6.4.5 pdwThreadID7
6.5 終止運行線程
6.5.1 線程函數返回
6.5.2 ExitThread函數
6.5.3 TerminateThread函數
6.5.4 進程終止運行時
6.5.5 線程終止運行時
6.6 線程內幕
6.7 C/C++運行庫注意事項
6.7.1 用_beginthreadex而不要用CreateThread創建線程
6.7.2 絕對不應該調用的C/C++運行庫函數
6.8 了解自己的身份
6.8.1 將偽句柄轉換為真正的句柄
第7章 線程調度、優先順序和關聯性
7.1 線程的掛起和恢復
7.2 進程的掛起和恢復
7.3 睡眠
7.4 切換到另一個線程
7.5 在超線程CPU上切換到另一個線程
7.6 線程的執行時間
7.7 在實際上下文中談CONTEXT結構
7.8 線程優先順序
7.9 從抽象角度看優先順序
7.10 優先順序編程
7.10.1 動態提升線程優先順序
7.10.2 為前台進程微調調度程序
7.10.3 調度I/O請求優先順序
7.10.4 Scheling Lab 示常式序
7.11 關聯性
第8章 用戶模式下的線程同步
8.1 原子訪問:Interlocked系列函數
8.2 高速緩存行
8.3 高級線程同步需要避免使用的一種方法
8.4 關鍵段
8.4.1 關鍵段:細節
8.4.2 關鍵段和旋轉鎖
8.4.3 關鍵段和錯誤處理
8.5 Slim讀/寫鎖
8.6 條件變數
8.6.1 Queue示常式序
8.6.2 在停止線程時的死鎖問題
8.6.3 一些有用的竅門和技巧
第9章 用內核對象進行線程同步
9.1 等待函數
9.2 等待成功所引起的副作用
9.3 事件內核對象
9.4 可等待的計時器內核對象
9.4.1 讓可等待的計時器添加APC調用
9.4.2 計時器的剩餘問題
9.5 信號量內核對象
9.6 互斥量內核對象
9.6.1 遺棄問題
9.6.2 互斥量與關鍵段的比較
9.6.3 Queue示常式序
9.7 線程同步對象速查表
9.8 其他的線程同步函數
9.8.1 非同步設備I/O
9.8.2 WaitForInputIdle函數
9.8.3 MsgWaitForMultipleObjects(Ex)函數
9.8.4 WaitForDebugEvent函數
9.8.5 SignalObjectAndWait函數
9.8.6 使用等待鏈遍歷API來檢測死鎖
第10章 同步設備I/O與非同步設備I/O
10.1 打開和關閉設備細看CreateFile函數
10.2 使用文件設備
10.2.1 取得文件的大小
10.2.2 設置文件指針的位置
10.2.3 設置文件尾
10.3 執行同步設備I/O
10.3.1 將數據刷新至設備
10.3.2 同步I/O的取消
10.4 非同步設備I/O基礎
10.4.1 OVERLAPPED結構
10.4.2 非同步設備I/O的注意事項
10.4.3 取消隊列中的設備I/O請求
10.5 接收I/O請求完成通知
10.5.1 觸發設備內核對象
10.5.2 觸發事件內核對象
10.5.3 可提醒I/O
10.5.4 I/O完成埠
10.5.5 模擬已完成的I/O請求
第11章 Windows線程池
11.1 情形1:以非同步方式調用函數
11.1.1 顯式地控制工作項
11.1.2 Batch示常式序
11.2 情形2:每隔一段時間調用一個函數
11.3 情形3:在內核對象觸發時調用一個函數
11.4 情形4:在非同步I/O請求完成時調用一個函數
11.5 回調函數的終止操作
11.5.1 對線程池進行定製
11.5.2 得體地銷毀線程池:清理組
第12章 纖程
第Ⅲ部分 內存管理
第13章 Windows內存體系結構
13.1 進程的虛擬地址空間
13.2 虛擬地址空間的分區
13.2.1 空指針賦值分區
13.2.2 用戶模式分區
13.3 地址空間中的區域
13.4 給區域調撥物理存儲器
13.5 物理存儲器和頁交換文件
13.6 頁面保護屬性
13.6.1 寫時復制
13.6.2 一些特殊的訪問保護屬性標志
13.7 實例分析
13.8 數據對齊的重要性
第14章 探索虛擬內存
14.1 系統信息
14.2 虛擬內存狀態
14.3 NUMA機器中的內存管理
14.4 確定地址空間的狀態
14.4.1 VMQuery函數
14.4.2 示常式序:虛擬內存映射
第15章 在應用程序中使用虛擬內存
15.1 預訂地址空間區域
15.2 給區域調撥物理存儲器
15.3 同時預訂和調撥物理存儲器
15.4 何時調撥物理存儲器
15.5 撤銷調撥物理存儲器及釋放區
15.5.1 何時撤銷調撥物理存儲器
15.5.2 虛擬內存分配示常式序
15.6 改變保護屬性
15.7 重置物理存儲器的內容
15.8 地址窗口擴展
第16章 線程棧
16.1 C/C++運行庫的棧檢查函數
16.2 Summation示常式序
第17章 內存映射文件
17.1 映射到內存的可執行文件和DLL
17.1.1 同一個可執行文件或DLL的多個實例不會共享靜態數據
17.1.2 在同一個可執行文件或DLL的多個實例間共享靜態數據
17.1.3 Application Instances示常式序
17.2 映射到內存的數據文件
17.2.1 方法1:一個文件,一塊緩存
17.2.2 方法2:兩個文件,一塊緩存
17.2.3 方法3:一個文件,兩塊緩存
17.2.4 方法4:一個文件,零個緩存
17.3 使用內存映射文件
17.3.1 第1步:創建或打開文件內核對象
17.3.2 第2步:創建文件映射內核對象
17.3.3 第3步:將文件的數據映射到進程的地址空間
17.3.4 第4步:從進程的地址空間撤銷對文件數據的映射
17.3.5 第5步和第6步:關閉文件映射對象和文件對象
17.6 File Reverse示常式序
17.7 用內存映射文件來處理大文件
17.8 內存映射文件和一致性
17.9 給內存映射文件指定基地址
17.10 內存映射文件的實現細節
第18章 堆
18.1 進程的默認堆
18.2 為什麼要創建額外的堆
18.2.1 對組件進行保護
18.2.2 更有效的內存管理
18.2.3 使內存訪問局部化
18.2.4 避免線程同步的開銷
18.2.5 快速釋放
18.3 如何創建額外的堆
18.3.1 從堆中分配內存塊
18.3.2 調整內存塊的大小
18.3.3 獲得內存塊的大小
18.3.4 釋放內存塊
18.3.5 銷毀堆
18.3.6 在C++中使用堆
18.4 其他堆函數
第Ⅳ部分 動態鏈接庫
第19章 DLL基礎
19.1 DLL和進程的地址空間
19.2 縱觀全局
19.2.1 構建DLL模塊
19.2.2 構建可執行模塊
19.2.3 運行可執行模塊
第20章 DLL高級技術
20.1 DLL模塊的顯式載入和符號鏈接
20.1.1 顯式地載入DLL模塊
20.1.2 顯式地卸載DLL模塊
20.1.3 顯式地鏈接到導出符號
20.2 DLL的入口點函數
20.2.1 DLL_PROCESS_ATTACH通知
20.2.2 DLL_PROCESS_DETACH通知
20.2.3 DLL_THREAD_ATTACH通知
20.2.4 DLL_THREAD_DETACH通知
20.2.5 DllMain的序列化調用
20.2.6 DllMain和C/C++運行庫
20.3 延遲載入DLL
20.4 函數轉發器
20.5 已知的DLL
20.6 DLL重定向
20.7 模塊的基地址重定位
20.8 模塊的綁定
第21章 線程局部存儲區
21.1 動態TLS
21.2 靜態TLS0
第22章 DLL注入和API攔截
22.1 DLL注入的一個例子
22.2 使用注冊表來注入DLL
22.3 使用Windows掛鉤來注入DLL
22.4 使用遠程線程來注入DLL
22.4.1 Inject Library示常式序
22.4.2 Image Walk DLL
22.5 使用木馬DLL來注入DLL
22.6 把DLL作為調試器來注入
22.7 使用CreateProcess來注入代碼
22.8 API攔截的一個例子9
22.8.1 通過覆蓋代碼來攔截API0
22.8.2 通過修改模塊的導入段來攔截API
22.8.3 Last MessageBox Info示常式序
第Ⅴ部分 結構化異常處理
第23章 終止處理程序
第24章 異常處理程序與軟體異常
24.1 通過實例理解異常過濾程序和異常處理程序
24.1.1 Funcmeister1函數
24.1.2 Funcmeister2函數
24.2 EXCEPTION_EXECUTE_HANDLER1
24.2.1 一些有用的例子
24.2.2 全局展開
24.2.3 停止全局展開
24.3 EXCEPTION_CONTINUE_EXECUTION
24.4 EXCEPTION_CONTINUE_SEARCH0
24.5 GetExceptionCode2
24.6 GetExceptionInformation6
24.7 軟體異常
第25章 未處理異常、向量化異常處理與C++異常
25.1 UnhandledExceptionFilter函數詳解
25.2 即時調試
25.3 電子表格示常式序
25.4 向量化異常和繼續處理程序
25.5 C++異常與結構化異常的比較
25.6 異常與調試器
第26章 錯誤報告與應用程序恢復
26.1 Windows錯誤報告控制台
26.2 可編程的Windows錯誤報告
26.3 對進程中所有的問題報告進行定製
26.4 問題報告的創建與定製
26.4.1 創建一個自定義的問題報告
26.4.2 設置報告參數:WerReportSetParameter
26.4.3 將小型轉儲文件放入報告:WerReportAddDump8
26.4.4 將任意文件放入報告:WerReportAddFile9
26.4.5 修改對話框文本:WerReportSetUIOption0
26.4.6 提交錯誤報告:WerReportSubmit0
26.4.7 關閉問題報告:WerReportCloseHandle
26.4.8 Customized WER示常式序
26.5 應用程序的自動重啟與恢復
26.5.1 應用程序的自動重啟
26.5.2 對應用程序恢復的支持
第Ⅵ部分
附錄A 構建環境
附錄B 消息處理宏、子控制項宏和API宏
索引
❾ windows核心編程怎麼都看不懂 剛掌握c和c++
Tip 1 不妨動手
操作系統應用程序編程,需要一些貯備知識,但需要多少,說不清楚。Windows核心編程有豐富的例子,不妨編譯下,運行下,改改,看看有什麼效果,慢慢就會學會。
Tip 2 貯備知識
編程方面,Windows編程,本質上是API編程,就像你使用stdlib等等裡面的malloc\free一樣,Windows SDK提供了豐富的函數供你使用系統資源。那麼,編程,你就需要熟悉API編程。不妨,寫一個通用鏈表,可以容納任何數據類型,支持頭出頭進,尾出尾進,單元素進,多元素進,索引訪問,遞歸訪問等等。這里鏈表相當於你自己開發的API庫,然後用在通訊錄管理、圖書管理,等經典大學課設裡面。這樣你就明白,Windows函數與你自己的鏈表函數,本質上沒啥區別。
知識方面,計算機基礎,操作系統原理,不用細看,大概網路看看就行,知道是個什麼東西。然後具體的知識,其實就是Windows核心編程要教授的內容啊!!!!學過這本書後,其他操作系統應用程序編程大同小異。其他操作系統的工作方式也大同小異。關鍵要知道,內存,虛擬內存,線程,進程,同步方法,通訊方法等等。思考一個問題,為啥這本書里有很多同步技術,為啥沒有非同步技術呢?
❿ windows 核心編程第五版的源代碼程序能在winXP上的VC6.0或vs2005上運行么
你安裝vs2008的企業版就可以使用,winxp系統可以運行,vistal系統也可以,主要是vs2008的
sdk.
我用的就是vs2008版本的,可以使用源代碼程序。
本人就是XP下環境運行的,不一定必須是vista