Windows 核心編程, 5/e Windows核心编程(第5版)

傑夫瑞 (Jeffrey Richter), 克裡斯托夫 (Christophe Nasarre)

  • 出版商: 清華大學
  • 出版日期: 2008-09-01
  • 售價: $594
  • 貴賓價: 9.5$564
  • 語言: 簡體中文
  • 頁數: 770
  • 裝訂: 平裝
  • ISBN: 7302184003
  • ISBN-13: 9787302184003
  • 立即出貨 (庫存=1)

買這商品的人也買了...

商品描述

<內容介紹>

Windows核心編程(第5版)針對Windows XP,Windows Vista和Windows Server 2008全面修訂,主題廣泛,內容豐富,講解深入而精闢。透過這本Windows編程經典,我們可以在專家的悉心指導下,洞悉Windows編程精華,深入瞭解高級編程技巧,編寫出高性能的Windows應用程序。本書重要主題: ?如何為32位和64位Windows系統構建和實現應用程序?如何新建和處理進程與作業?如何調度、管理、同步和銷毀線程?如何通過I/O完成埠執行同步和異步設備I/O操作?如何使用虛擬內存、內存映射文件和堆之類的各種技術來分配內存?如何處理默認調撥的線程棧物理存儲?如何為延遲加載、API攔截和進程註入構建DLL ?如何使用結構化異常處理、Windows錯誤恢復和應用程序重啟等機制◆

<章節目錄>
第1部分必備知識
第1章錯誤處理
1.1定義自己的錯誤代碼
1.2 Error Show示例程序
第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 Create Process函數
4.2.1 psz Application Name和psz Command Line參數
4.2.2 psa Process,psaThread和bInherit Handles參數
4.2.3 fdw Create參數
4.2.4 pv Environment參數
4.2.5 psz Cur Dir參數
4.2.6 psi StartInfo參數
4.2.7 ppi ProcInfo參數
4.3終止進程
4.3.1主線程的入口點函數返回
4.3.2 Exit Process函數
4.3.3 Terminate Process函數
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 Create Thread函數
6.4.1 psa參數
6.4.2 cb Stack Size參數
6.4. 3 pfn Start Addr和pv Param參數
6.4.4 dw Create Flags
6.4.5 pdw ThreadID7
6.5終止運行線程
6.5.1線程函數返回
6.5.2 Exit Thread函數
6.5.3 Terminate Thread函數
6.5.4進程終止運行時
6.5. 5線程終止運行時
6.6線程內幕
6.7 C/C++運行庫註意事項
6.7.1用_beginthreadex而不要用Create Thread創建線程
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 Scheduling 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 Wait For InputIdle函數
9.8.3 Msg Wait For Multiple Objects(Ex)函數
9.8.4 Wait For Debug Event函數
9.8.5 Signal Object And Wait函數
9.8.6使用等待鏈遍歷API來檢測死鎖
第10章同步設備I/O與異步設備I/O
10.1打開和關閉設備細看Create File函數
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 VM Query函數
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 Dll Main的序列化調用
20.2 .6 Dll Main和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使用Create Process來註入代碼
22.8 API攔截的一個例子9
22.8.1通過覆蓋代碼來攔截API0
22.8.2通過修改模塊的導入段來攔截API
22.8.3 Last Message Box 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 Unhandled Exception Filter函數詳解
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設置報告參數:Wer Report Set Parameter
26.4.3將小型轉儲文件放入報告:Wer Report Add Dump 8
26.4.4將任意文件放入報告:Wer Report AddFile 9
26.4.5修改對話框文本:Wer Report Set UI Option
26.4.6提交錯誤報告:Wer Report Submit
26.4. 7關閉問題報告:Wer Report Close Handle
26.4.8 Customized WER示例程序
26.5應用程序的自動重啟與恢復
26.5.1應用程序的自動重啟
26.5.2對應用程序恢復的支持
第Ⅵ部分
附錄A構建環境
附錄B消息處理宏、子控件宏和API宏
索引

序言