注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網(wǎng)絡軟件與程序設計Windows核心編程(第5版 中文限量版)

Windows核心編程(第5版 中文限量版)

Windows核心編程(第5版 中文限量版)

定 價:¥256.00

作 者: [美] 杰弗里·李希特 等 著
出版社: 清華大學出版社
叢編項:
標 簽: 暫缺

ISBN: 9787302609322 出版時間: 2022-10-01 包裝: 平裝
開本: 16開 頁數(shù): 868 字數(shù):  

內容簡介

  《Windows核心編程(第5版 中文限量版)》是一本經(jīng)典的Windows核心編程指南,從第1版到第5版,引領著數(shù)十萬程序員走入Windows開發(fā)陣營,培養(yǎng)了大批精英。 作為Windows開發(fā)人員的必備參考,《Windows核心編程(第5版 中文限量版)》是為打算理解Windows的C和C++程序員精心設計的。第5版全面覆蓋Windows XP,Windows Vista和Windows Server 2008中的170個新增函數(shù)和Windows特性。書中還講解了Windows系統(tǒng)如何使用這些特性,我們開發(fā)的應用程序又如何充分使用這些特性,如何自行創(chuàng)建新的特性。

作者簡介

  杰弗里·李希特 (Jeffrey Richter) 知名Windows和.NET技術專家,專業(yè)暢銷書作者。他的《Windows核心編程》和《CLR》系列培育了好幾代軟件開發(fā)人員。他是Wintellect公司的聯(lián)合創(chuàng)始人,也是MSDN雜志.NET專欄的特邀編輯。1999年開始,他就以技術顧問的方式與.NET框架開發(fā)團隊緊密合作,共同經(jīng)歷了.NET框架的孕育與誕生,對.NET思想的領悟、對.NET的細節(jié)熟稔,是其他任何作者難以企及的,他是.NET領域當之無愧的一面旗幟。杰弗里目前供職于微軟??死锼雇懈?middot;納薩雷 (Christophe Nasarre) MSDN雜志撰稿人,Business Objects的軟件架構師和開發(fā)部門領導,該公司致力于通過商務智能解決方案來提升決策能力和績效。周 靖 微軟MVP(最有價值專家),技術型資深譯者。涉獵廣泛,具有深厚的技術功底和良好的文學素養(yǎng)。早期癡迷于硬件,曾多年擔任《微型計算機》雜志特約作者。繼而潛心鉆研程序設計并在這方面積累了豐富的經(jīng)驗。翻譯風格嚴謹、準確、樸實、流暢,深受讀者好評。代表譯著有《C++入門經(jīng)典》(z新版第10版)、《Windows核心編程》(z新版第5版)、《CLR via C》(z新版第4版)和《Visual C#從入門到精通》(z新版第10版)等。

圖書目錄


第I 部分 必 備 知 識
第1 章 錯誤處理     3
第2 章 字符和字符串處理    11
第3 章 內核對象        35
第II 部分 工 作 機 理
第4 章 進程        75
第5 章 作業(yè)      139
第6 章 線程基礎       161
第7 章 線程調度、優(yōu)先級和親和性        191
第8 章 用戶模式下的線程同步    231
第9 章 用內核對象進行線程同步       271
第10 章 同步和異步設備I/O      325
第11 章 Windows 線程池       381
第12 章 纖程     407
第III 部分 內 存 管 理
第13 章 Windows 內存架構     417
第14 章 探索虛擬內存      443
第15 章 在應用程序中使用虛擬內存       469
第16 章 線程棧        505
第17 章 內存映射文件      519
第18 章 堆       581
第IV 部分 動態(tài)鏈接庫
第19 章 DLL 基礎     601
第20 章DLL 高級技術  619
第21 章 線程局部存儲      667
第22 章 DLL 注入和API 攔截    675
第V 部分 結構化異常處理
第23 章 終止處理程序       739
第24 章 異常處理程序與軟件異常     761
第25 章 未處理異常、向量化異常處理與C 異常   791
第26 章 錯誤報告與應用程序恢復     821
附 錄
附錄A 生成環(huán)境       851
附錄B 消息處理宏、子控件宏和API 宏     865
索引         871
詳細目錄
第I 部分 必 備 知 識
第1 章 錯誤處理        3
1.1 定義自己的錯誤碼     7
1.2 ErrorShow 示例程序        8
第2 章 字符和字符串處理   11
2.1 字符編碼     12
2.2 ANSI 字符和Unicode 字符與字符串數(shù)據(jù)類型         14
2.3 Windows 中的Unicode 和ANSI 函數(shù)         16
2.4 C 運行庫中的Unicode 函數(shù)和ANSI 函數(shù)    19
2.5 C 運行庫中的安全字符串函數(shù)      19
2.4.1 初識新的安全字符串函數(shù)         20
2.4.2 字符串處理時如何獲得更多控制     24
2.4.3 Windows 字符串函數(shù)        26
2.6 為何要用Unicode         27
2.7 推薦的字符和字符串處理方式      28
2.8 Unicode 與ANSI 字符串轉換       29
2.8.1 導出ANSI 和Unicode DLL 函數(shù)     31
2.8.2 判斷文本是ANSI 還是Unicode       33
第3 章 內核對象       35
3.1 何為內核對象         35
3.1.1 使用計數(shù)      37
3.1.2 安全性         37
3.2 進程的內核對象句柄表        40
3.2.1 創(chuàng)建內核對象          41
3.2.2 關閉內核對象          43
3.3 跨進程邊界共享內核對象     46
3.3.1 使用對象句柄繼承           46
3.3.2 改變句柄的標志       50
3.3.3 為對象命名        51
3.3.4 終端服務命名空間           56
3.3.5 專有命名空間          57
3.3.6 復制對象句柄          66
第II 部分 工 作 機 理
第4 章 進程     75
4.1 編寫個Windows 應用程序    76
4.1.1 進程實例句柄          81
4.1.2 進程前一個實例的句柄     84
4.1.3 進程的命令行          84
4.1.4 進程的環(huán)境變量       86
4.1.5 進程的親和性          92
4.1.6 進程的錯誤模式       92
4.1.7 進程當前所在的驅動器和目錄        93
4.1.8 進程的當前目錄       94
4.1.9 系統(tǒng)版本      95
4.2 CreateProcess 函數(shù)         99
4.2.1 pszApplicationName 參數(shù)和pszCommandLine 參數(shù)    99
4.2.2 參數(shù)psaProcess,psaThread 和bInheritHandles       101
4.2.3 fdwCreate 參數(shù)       104
4.2.4 pvEnvironment 參數(shù)        106
4.2.5 pszCurDir 參數(shù)       106
4.2.6 psiStartInfo 參數(shù)      106
4.2.7 ppiProcInfo 參數(shù)      113
4.3 終止進程         116
4.3.1 主線程的入口點函數(shù)返回       116
4.3.2 ExitProcess 函數(shù)      116
4.3.3 TerminateProcess 函數(shù)      118
4.3.4 當進程中的所有線程終止時         119
4.3.5 當進程終止運行時         119
4.4 子進程      120
4.5 管理員以標準用戶權限運行       122
4.5.1 自動提升進程權限         126
4.5.2 手動提升進程權限         127
4.5.3 何為當前權限上下文       129
4.5.4 枚舉系統(tǒng)中正在運行的進程         131
4.5.5 Process Information 示例程序         132
第5 章 作業(yè)          139
5.1 對作業(yè)中的進程施加限制          144
5.2 將進程放入作業(yè)中       151
5.3 終止作業(yè)中的所有線程       152
5.4 作業(yè)通知         156
5.5 Job Lab 示例程序         158
第6 章 線程基礎      161
6.1 何時創(chuàng)建線程        162
6.2 何時不應該創(chuàng)建線程         164
6.3 編寫個線程函數(shù)         165
6.4 CreateThread 函數(shù)        166
6.4.1 psa 參數(shù)      167
6.4.2 cbStackSize 參數(shù)     167
6.4.3 pfnStartAddr 參數(shù)和pvParam 參數(shù)       168
6.4.4 dwCreateFlags 參數(shù)         169
6.4.5 pdwThreadID 參數(shù)         169
6.5 終止運行線程        170
6.5.1 線程函數(shù)返回         170
6.5.2 ExitThread 函數(shù)       170
6.5.3 TerminateThread 函數(shù)      171
6.5.4 進程終止運行時      171
6.5.5 線程終止運行時      172
6.6 線程內幕         173
6.7 C/C 運行庫注意事項       175
6.7.1 用_beginthreadex 而不要用CreateThread 創(chuàng)建線程      185
6.7.2 不應該調用的C/C 運行庫函數(shù)       186
6.8 了解自己的身份     187
第7 章 線程調度、優(yōu)先級和親和性  191
7.1 線程的掛起和恢復       193
7.2 進程的掛起和恢復       194
7.3 睡眠         196
7.4 切換到另一個線程       196
7.5 在超線程CPU 上切換到另一個線程         197
7.6 線程的執(zhí)行時間     197
7.7 在實際上下文中談CONTEXT 結構         202
7.8 線程優(yōu)先級           207
7.9 從抽象角度看優(yōu)先級         208
7.10 優(yōu)先級編程         211
7.10.1 動態(tài)提升線程優(yōu)先級     214
7.10.2 為前臺進程調整調度程序      216
7.10.3 調度I/O 請求優(yōu)先級      216
7.10.4 Scheduling Lab 示例程序       218
7.11 親和性     224
第8 章 用戶模式下的線程同步      231
8.1 原子訪問:Interlocked 系列函數(shù)        232
8.2 高速緩存行           239
8.3 高級線程同步        241
8.4 關鍵段      243
8.4.1 關鍵段:細節(jié)         246
8.4.2 關鍵段和自旋鎖      249
8.4.3 關鍵段和錯誤處理         250
8.5 Slim 讀/ 寫鎖        251
8.6 條件變量         254
8.6.1 Queue 示例程序      255
8.6.2 停止線程時的死鎖問題          265
8.6.3 一些有用的技巧和技術          267
第9 章 用內核對象進行線程同步    271
9.1 等待函數(shù)         274
9.2 等待成功所引起的副作用          276
9.3 事件內核對象        278
9.4 可等待的計時器內核對象          289
9.4.1 讓可等待的計時器入隊APC 調用       293
9.4.2 計時器未盡事宜      295
9.5 信號量內核對象     296
9.6 互斥量內核對象     299
9.6.1 遺棄問題         301
9.6.2 互斥量與關鍵段的比較          302
9.6.3 Queue 示例程序      302
9.7 線程同步對象速查表         312
9.8 其他線程同步函數(shù)       313
9.8.1 異步設備I/O          313
9.8.2 WaitForInputIdle 函數(shù)      314
9.8.3 MsgWaitForMultipleObjects(Ex) 函數(shù)         315
9.8.4 WaitForDebugEvent 函數(shù)         315
9.8.5 SignalObjectAndWait 函數(shù)       316
9.8.6 使用等待鏈遍歷API 來檢測死鎖   317
第10 章 同步和異步設備I/O         325
10.1 打開和關閉設備         326
10.2 使用文件設備       335
10.2.1 取得文件的大小           335
10.2.2 定位文件指針       337
10.2.3 設置文件尾          339
10.3 執(zhí)行同步設備I/O           339
10.3.1 將數(shù)據(jù)回寫到設備        340
10.3.2 同步I/O 取消        340
10.4 異步設備I/O 基礎           342
10.4.1 OVERLAPPED 結構      343
10.4.2 異步設備I/O 的注意事項       345
10.4.3 取消隊列中的設備I/O 請求         347
10.5 接收I/O 請求完成通知     348
10.5.1 觸發(fā)設備內核對象        348
10.5.2 觸發(fā)事件內核對象        350
10.5.3 可提醒I/O           353
10.5.4 I/O 完成端口         359
10.5.5 模擬已完成的I/O 請求         371
第11 章 Windows 線程池      381
11.1 情形1:異步調用函數(shù)      382
11.1.1 顯式控制工作項           383
11.1.2 Batch 示例程序      385
11.2 情形2:定時調用函數(shù)      389
11.3 情形3:在內核對象觸發(fā)時調用函數(shù)       395
11.4 情形4:在異步I/O 請求完成時調用函數(shù)      397
11.5 回調函數(shù)的終止操作        399
11.5.1 對線程池進行定制        400
11.5.2 得體地銷毀線程池:清理組        403
第12 章 纖程        407
第III 部分 內 存 管 理
第13 章 Windows 內存架構        417
13.1 進程的虛擬地址空間        417
13.2 虛擬地址空間的分區(qū)        418
13.2.1 空指針賦值分區(qū)           419
13.2.2 用戶模式分區(qū)       419
13.3 地址空間中的區(qū)域           422
13.4 為區(qū)域調撥物理存儲        423
13.5 物理存儲和分頁文件        424
13.6 頁面保護屬性         428
13.6.1 寫時復制        429
13.6.2 一些特殊的訪問保護屬性標志     430
13.7 實例分析       430
13.8 數(shù)據(jù)對齊的重要性           438
第14 章 探索虛擬內存    443
14.1 系統(tǒng)信息       443
14.2 虛擬內存狀態(tài)       453
14.3 NUMA 機器中的內存管理       455
14.4 確定地址空間的狀態(tài)        458
14.4.1 VMQuery 函數(shù)      460
14.4.2 示例程序:虛擬內存映射      466
第15 章 在應用程序中使用虛擬內存      469
15.1 預訂地址空間區(qū)域           470
15.2 為預訂的區(qū)域調撥物理存儲      472
15.3 同時預訂和調撥物理存儲         473
15.4 何時調撥物理存儲           474
15.5 撤銷調撥物理存儲并釋放區(qū)域         476
15.5.1 何時撤銷調撥物理存儲         477
15.5.2 虛擬內存分配示例程序         478
15.6 更改保護屬性       487
15.7 重置物理存儲的內容        488
15.8 地址窗口擴展       492
第16 章 線程棧      505
16.1 C/C 運行庫的棧檢查函數(shù)      510
16.2 Summation 示例程序        512
第17 章 內存映射文件    519
17.1 映射到內存的可執(zhí)行文件和DLL      520
17.1.1 同一個可執(zhí)行文件或DLL 的多個實例不會共享靜態(tài)數(shù)據(jù)         521
17.1.2 在同一個可執(zhí)行文件或DLL 的多個實例間共享靜態(tài)數(shù)據(jù)         523
17.1.3 Application Instances 示例程序     529
17.2 映射到內存的數(shù)據(jù)文件     533
17.2.1 方法1:一個文件,一個緩沖區(qū)   533
17.2.2 方法2:兩個文件,一個緩沖區(qū)   534
17.2.3 方法3:一個文件,兩個緩沖區(qū)   534
17.2.4 方法4:一個文件,零個緩沖區(qū)   534
17.3 使用內存映射文件           535
17.3.1 第1 步:創(chuàng)建或打開文件內核對象         535
17.3.2 第2 步:創(chuàng)建文件映射內核對象       536
17.3.3 第3 步:將文件的數(shù)據(jù)映射到進程的地址空間     540
17.3.4 第4 步:從進程的地址空間撤銷對文件數(shù)據(jù)的映射         543
17.3.5 第5 步和第6 步:關閉文件映射對象和文件對象       545
17.3.6 File Reverse 示例程序           546
17.4 用內存映射文件處理大文件      553
17.5 內存映射文件和一致性     555
17.6 為內存映射文件指定基地址      556
17.7 內存映射文件的實現(xiàn)細節(jié)         557
17.8 用內存映射文件在進程間共享數(shù)據(jù)         558
17.9 以分頁文件作為后備存儲的內存映射文件     559
17.10 稀疏調撥的內存映射文件       565
第18 章 堆    581
18.1 進程的默認堆       582
18.2 為什么要創(chuàng)建額外的堆     583
18.2.1 對組件進行保護           583
18.2.2 更高效的內存管理        584
18.2.3 局部訪問        584
18.2.4 避免線程同步的開銷     585
18.2.5 快速釋放        585
18.3 如何創(chuàng)建額外的堆           585
18.3.1 從堆中分配內存塊        588
18.3.2 調整內存塊的大小        589
18.3.3 獲得內存塊的大小        590
18.3.4 釋放內存塊          590
18.3.5 銷毀堆      591
18.3.6 在C 中使用堆          591
18.4 其他堆函數(shù)         594
第IV 部分 動態(tài)鏈接庫
第19 章 DLL 基礎        601
19.1 DLL 和進程的地址空間           602
19.2 縱觀全局       605
19.2.1 生成DLL 模塊      607
19.2.2 生成可執(zhí)行模塊           613
19.2.3 運行可執(zhí)行模塊          616
第20 章 DLL 高級技術    619
20.1 DLL 模塊的顯式加載和符號鏈接      619
20.1.1 顯式加載DLL 模塊       621
20.1.2 顯式卸載DLL 模塊       624
20.1.3 顯式鏈接到導出的符號         627
20.2 DLL 的入口點函數(shù)          628
20.2.1 DLL_PROCESS_ATTACH 通知    630
20.2.2 DLL_PROCESS_DETACH 通知    631
20.2.3 DLL_THREAD_ATTACH 通知     633
20.2.4 DLL_THREAD_DETACH 通知     634
20.2.5 DllMain 的序列化調用         635
20.2.6 DllMain 和C/C 運行庫      638
20.3 延遲加載DLL      639
20.4 函數(shù)轉發(fā)器         652
20.5 已知的DLL         652
20.6 DLL 重定向         654
20.7 模塊的基址重定位           655
20.8 模塊的綁定         662
第21 章 線程局部存儲    667
21.1 動態(tài)TLS       668
21.2 靜態(tài)TLS       673
第22 章 DLL 注入和API 攔截      675
22.1 DLL 注入的一個例子       676
22.2 使用注冊表來注入DLL           678
22.3 使用Windows 掛鉤來注入DLL        680
22.4 使用遠程線程來注入DLL        694
22.4.1 Inject Library 示例程序         698
22.4.2 Image Walk DLL           705
22.5 使用木馬DLL 來注入DLL       708
22.6 將DLL 作為調試器來注入       708
22.7 使用CreateProcess 來注入代碼         709
22.8 API 攔截的一個例子        709
22.8.1 通過覆蓋代碼來攔截API      710
22.8.2 通過修改模塊的導入段來攔截API         711
22.8.3 Last MessageBox Info 示例程序     715
第V 部分 結構化異常處理
第23 章 終止處理程序    739
第24 章 異常處理程序與軟件異常   761
24.1 通過實例理解異常過濾程序和異常處理程序       762
24.1.1 Funcmeister1 函數(shù)         762
24.1.2 Funcmeister2 函數(shù)         763
24.2 EXCEPTION_EXECUTE_HANDLER      765
24.2.1 一些有用的例子           766
24.2.2 全局展開        769
24.2.3 停止全局展開       772
24.3 EXCEPTION_CONTINUE_EXECUTION       774
24.4 EXCEPTION_CONTINUE_SEARCH       776
24.5 GetExceptionCode           778
24.6 GetExceptionInformation 函數(shù)           783
24.7 軟件異常       787
第25 章 未處理異常、向量化異常處理與C 異常      791
25.1 UnhandledExceptionFilter 函數(shù)詳解         794
25.2 即時調試       799
25.3 Spreadsheet 示例程序       802
25.4 向量化異常和繼續(xù)處理程序      814
25.5 C 異常與結構化異常的比較        815
25.6 異常與調試器       817
第26 章 錯誤報告與應用程序恢復   821
26.1 Windows 錯誤報告控制臺         821
26.2 可編程的Windows 錯誤報告    824
26.3 定制進程中的所有問題報告      826
26.4 問題報告的創(chuàng)建與定制     828
26.4.1 創(chuàng)建自定義問題報告     830
26.4.2 設置報告參數(shù):WerReportSetParameter     832
26.4.3 將小型轉儲文件放入報告:WerReportAddDump    832
26.4.4 將任意文件放入報告:WerReportAddFile       833
26.4.5 修改對話框文本:WerReportSetUIOption       834
26.4.6 提交錯誤報告:WerReportSubmit       835
26.4.7 關閉問題報告:WerReportCloseHandle     836
26.4.8 Customized WER 示例程序         837
26.5 應用程序的自動重啟與恢復      845
26.5.1 應用程序的自動重啟     845
26.5.2 應用程序恢復的支持           846
附 錄
附錄A 生成環(huán)境      851
附錄B 消息處理宏、子控件宏和API 宏       865
索引      871

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) www.talentonion.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號