注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)程序設(shè)計(jì)綜合Windows核心編程

Windows核心編程

Windows核心編程

定 價(jià):¥86.00

作 者: (美)Jeffrey Richter(J.理查特)著;王建華[等]譯;王建華譯
出版社: 機(jī)械工業(yè)出版社
叢編項(xiàng): 微軟公司核心技術(shù)書(shū)庫(kù)
標(biāo) 簽: Windows

ISBN: 9787111079453 出版時(shí)間: 2005-09-01 包裝: 平裝
開(kāi)本: 26cm 頁(yè)數(shù): 689 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書(shū)是講解Windows 操作系統(tǒng)內(nèi)部機(jī)制的專著,作者從基本概念入手,全面系統(tǒng)地介紹了Windows的各種基本構(gòu)件,如進(jìn)程、線程、DLL和內(nèi)存管理等,并列舉了大量應(yīng)用程序,精辟地分析了構(gòu)件的使用方法,為掌握Windows 編程技巧提供了一條有效的捷徑。對(duì)于不同水平的Windows 編程人員來(lái)說(shuō),本書(shū)都具有極好的參考價(jià)值。

作者簡(jiǎn)介

  JeffreyRichterJeffreyRichter是一位在全球享有盛譽(yù)的技術(shù)作家,尤其在Windows/.NET領(lǐng)域有著杰出的貢獻(xiàn)。他的第一本W(wǎng)indows著作Windows3:ADeveloper'sGuide大獲好評(píng),從而聲名遠(yuǎn)揚(yáng)。之后,他又推出了經(jīng)典著作《Windows高級(jí)編程指南》和《Windows核心編程》。如今這兩本書(shū)早已成為Windows程序設(shè)計(jì)領(lǐng)域的顛峰之作,培育了幾代軟件開(kāi)發(fā)設(shè)計(jì)人員。他的每一本新作問(wèn)世,我們都有理由相信這是一本巨著,我們想要的一切盡在其中。Jeffery是Wintellect公司的創(chuàng)始人之一,也是MSDN雜志.NET專欄的特邀編輯?,F(xiàn)在他正領(lǐng)導(dǎo)開(kāi)發(fā)該公司的.NET程序設(shè)計(jì)課程,向大眾推廣.NET技術(shù)。因?yàn)樗?999年開(kāi)始就參與了微軟.NET框架開(kāi)發(fā)組的咨詢工作,與這些一線人員一起經(jīng)歷了.NET的孕育與誕生,所以他對(duì).NET思想的領(lǐng)悟、對(duì).NET的細(xì)節(jié)熟稔,是其他任何作家難以企及的。他是.NET著作領(lǐng)域中當(dāng)之無(wú)愧的一面旗幟。>>更多作品

圖書(shū)目錄

譯者序
前言
第一部分 程序員必讀
第1章 對(duì)程序錯(cuò)誤的處理
1.1 定義自己的錯(cuò)誤代碼
1.2 ErrorShow示例應(yīng)用程序
第2章 Unicode
2.1 字符集
2.1.1 單字節(jié)與雙字節(jié)字符集
2.1.2 Unicode:寬字節(jié)字符集
2.2 為什么使用Unicode
2.3 Windows 2000與Unicode
2.4 Windows 98與Unicode
2.5 Windows CE與Unicode
2.6 需要注意的問(wèn)題
2.7 對(duì)COM的簡(jiǎn)單說(shuō)明
2.8 如何編寫(xiě)Unicode源代碼
2.8.1 C運(yùn)行期庫(kù)對(duì)Unicode的支持
2.8.2 Windows定義的Unicode數(shù)據(jù)類(lèi)型
2.8.3 Windows中的Unicode函數(shù)和ANSI函數(shù)
2.8.4 Windows字符串函數(shù)
2.9 成為符合ANSI和Unicode的應(yīng)用程序
2.9.1 Windows字符串函數(shù)
2.9.2 資源
2.9.3 確定文本是ANSI文本還是Unicode文本
2.9.4 在Unicode與ANSI之間轉(zhuǎn)換字符串
第3章 內(nèi)核對(duì)象
3.1 什么是內(nèi)核對(duì)象
3.1.1 內(nèi)核對(duì)象的使用計(jì)數(shù)
3.1.2 安全性
3.2 進(jìn)程的內(nèi)核對(duì)象句柄表
3.2.1 創(chuàng)建內(nèi)核對(duì)象
3.2.2 關(guān)閉內(nèi)核對(duì)象
3.3 跨越進(jìn)程邊界共享內(nèi)核對(duì)象
3.3.1 對(duì)象句柄的繼承性
3.3.2 改變句柄的標(biāo)志
3.3.3 命名對(duì)象
3.3.4 終端服務(wù)器的名字空間
3.3.5 復(fù)制對(duì)象句柄
第二部分 編程的具體方法
第4章 進(jìn)程
4.1 編寫(xiě)第一個(gè)Windows應(yīng)用程序
4.1.1 進(jìn)程的實(shí)例句柄
4.1.2 進(jìn)程的前一個(gè)實(shí)例句柄
4.1.3 進(jìn)程的命令行
4.1.4 進(jìn)程的環(huán)境變量
4.1.5 進(jìn)程的親緣性
4.1.6 進(jìn)程的錯(cuò)誤模式
4.1.7 進(jìn)程的當(dāng)前驅(qū)動(dòng)器和目錄
4.1.8 進(jìn)程的當(dāng)前目錄
4.1.9 系統(tǒng)版本
4.2 CreateProcess函數(shù)
4.2.1 pszApplicationName和pszCommandLine
4.2.2 psa Process、psa Thread和binherit Handles
4.2.3 fdwCreate
4.2.4 pvEnvironment
4.2.5 pszCurDir
4.2.6 psiStartlnfo
4.2.7 ppiProclnfo
4.3 終止進(jìn)程的運(yùn)行
4.3.1 主線程的進(jìn)入點(diǎn)函數(shù)返回
4.3.2 ExitProcess函數(shù)
4.3.3 TerminateProcess函數(shù)
4.3.4 進(jìn)程終止運(yùn)行時(shí)出現(xiàn)的情況
4.4 子進(jìn)程
4.5 枚舉系統(tǒng)中運(yùn)行的進(jìn)程
第5章 作業(yè)
5.1 對(duì)作業(yè)進(jìn)程的限制
5.2 將進(jìn)程放入作業(yè)
5.3 終止作業(yè)中所有進(jìn)程的運(yùn)行
5.4 查詢作業(yè)統(tǒng)計(jì)信息
5.5 作業(yè)通知信息
5.6 JobLab示例應(yīng)用程序
第6章 線程的基礎(chǔ)知識(shí)
6.1 何時(shí)創(chuàng)建線程
6.2 何時(shí)不能創(chuàng)建線程
6.3 編寫(xiě)第一個(gè)線程函數(shù)
6.4 CreateThread函數(shù)
6.4.1 psa
6.4.2 cbStack
6.4.3 pfnStartAddr和pvParam
6.4.4 fdwCreate
6.4.5 pdwThreadID
6.5 終止線程的運(yùn)行
6.5.1 線程函數(shù)返回
6.5.2 ExiThread函數(shù)
6.5.3 TerminateThread函數(shù)
6.5.4 在進(jìn)程終止運(yùn)行時(shí)撤消線程
6.5.5 線程終止運(yùn)行時(shí)發(fā)生的操作
6.6 線程的一些性質(zhì)
6.7 C/C++運(yùn)行期庫(kù)的考慮
6.7.1 Oops——錯(cuò)誤地調(diào)用了CreateThread
6.7.2 不應(yīng)該調(diào)用的C/C++運(yùn)行期庫(kù)函數(shù)
6.8 對(duì)自己的ID概念應(yīng)該有所了解
第7章 線程的調(diào)度、優(yōu)先級(jí)和親緣性
7.1 暫停和恢復(fù)線程的運(yùn)行
7.2 暫停和恢復(fù)進(jìn)程的運(yùn)行
7.3 睡眠方式
7.4 轉(zhuǎn)換到另一個(gè)線程
7.5 線程的運(yùn)行時(shí)間
7.6 運(yùn)用環(huán)境結(jié)構(gòu)
7.7 線程的優(yōu)先級(jí)
7.8 對(duì)優(yōu)先級(jí)的抽象說(shuō)明
7.9 程序的優(yōu)先級(jí)
7.9.1 動(dòng)態(tài)提高線程的優(yōu)先級(jí)等級(jí)
7.9.2 為前臺(tái)進(jìn)程調(diào)整調(diào)度程序
7.9.3 Scheduling Lab示例應(yīng)用程序
7.10 親緣性
第8章 用戶方式中線程的同步
8.1 原子訪問(wèn):互鎖的函數(shù)家族
8.2 高速緩存行
8.3 高級(jí)線程同步
8.4 關(guān)鍵代碼段
8.4.1 關(guān)鍵代碼段準(zhǔn)確的描述
8.4.2 關(guān)鍵代碼段與循環(huán)鎖
8.4.3 關(guān)鍵代碼段與錯(cuò)誤處理
8.4.4 非常有用的提示和技巧
第9章 線程與內(nèi)核對(duì)象的同步
9.1 等待函數(shù)
9.2 成功等待的副作用
9.3 事件內(nèi)核對(duì)象
9.4 等待定時(shí)器內(nèi)核對(duì)象
9.4.1 讓等待定時(shí)器給APC項(xiàng)排隊(duì)
9.4.2 定時(shí)器的松散特性
9.5 信標(biāo)內(nèi)核對(duì)象
9.6 互斥對(duì)象內(nèi)核對(duì)象
9.6.1 釋放問(wèn)題
9.6.2 互斥對(duì)象與關(guān)鍵代碼段的比較
9.6.3 Queue示例應(yīng)用程序
9.7 線程同步對(duì)象速查表
9.8 其他的線程同步函數(shù)
9.8.1 異步設(shè)備I/O
9.8.2 WaitForInputIdle
9.8.3 MsgWaitForMultipleObjects(Ex)
9.8.4 WaitForDebugEvent
9.8.5 SingleObjectAndWait
第10章 線程同步工具包
10.1 實(shí)現(xiàn)關(guān)鍵代碼段:Optex
10.2 創(chuàng)建線程安全的數(shù)據(jù)類(lèi)型和反信標(biāo)
10.3 單個(gè)寫(xiě)入程序/多個(gè)閱讀程序的保護(hù)
10.4 實(shí)現(xiàn)一個(gè)WaitForMultipleExpressions函數(shù)
第11章 線程池的使用
11.1 方案1:異步調(diào)用函數(shù)
11.2 方案2:按規(guī)定的時(shí)間間隔調(diào)用函數(shù)
11.3 方案3:當(dāng)單個(gè)內(nèi)核對(duì)象變?yōu)橐淹ㄖ獱顣r(shí)調(diào)用函數(shù)
11.4 方案4:當(dāng)異步I/O請(qǐng)求完成運(yùn)行時(shí)調(diào)用函數(shù)
第12章 纖程
12.1 纖程的操作
12.2 Counter示例應(yīng)用程序
第三部分 內(nèi)存管理
第13章 Windows的內(nèi)存結(jié)構(gòu)
13.1 進(jìn)程的虛擬地址空間
13.2 虛擬地址空間如何分區(qū)
13.2.1 NuLL指針?lè)峙涞姆謪^(qū)——適用于Windows 2000和Windows 98
13.2.2 MS-DOS/16位Windows應(yīng)用程序兼容分區(qū)——僅適用Windows 98
13.2.3 用戶方式分區(qū)——適用Windows 2000和Windows 98
13.2.4 64KB禁止進(jìn)入的分區(qū)——僅適用于Windows 2000
13.2.5 共享的MMF分區(qū)——僅適用于Windows 98
13.2.6 內(nèi)核方式分區(qū)——適用于Windows 2000和Windows 98
13.3 地址空間中的區(qū)域
13.4 提交地址空間區(qū)域中的物理存儲(chǔ)器
13.5 物理存儲(chǔ)器與頁(yè)文件
13.6 保護(hù)屬性
13.6.1 Copy-on-Write訪問(wèn)
13.6.2 特殊的訪問(wèn)保護(hù)屬性的標(biāo)志
13.7 綜合使用所有的元素
13.7.1 區(qū)域的內(nèi)部情況
13.7.2 與Windows 98地址空間的差別
13.8 數(shù)據(jù)對(duì)齊的重要性
第14章 虛擬內(nèi)存
14.1 系統(tǒng)信息
14.2 虛擬內(nèi)存的狀態(tài)
14.3 確定地址空間的狀態(tài)
14.3.1 VMQuery函數(shù)
14.3.2 虛擬內(nèi)存表示例應(yīng)用程序
第15章 在應(yīng)用程序中使用虛擬內(nèi)存
15.1 在地址空間中保留一個(gè)區(qū)域
15.2 在保留區(qū)域中的提交存儲(chǔ)器
15.3 同時(shí)進(jìn)行區(qū)域的保留和內(nèi)存的提交
15.4 何時(shí)提交物理存儲(chǔ)器
15.5 回收虛擬內(nèi)存和釋放地址空間區(qū)域
15.5.1 何時(shí)回收物理存儲(chǔ)器
15.5.2 虛擬內(nèi)存分配的示例應(yīng)用程序
15.6 改變保護(hù)屬性
15.7 清除物理存儲(chǔ)器的內(nèi)容
15.8 地址窗口擴(kuò)展——適用于Windows 2000
第16章 線程的堆棧
16.1 Windows 98下的線程堆棧
16.2 C/C++運(yùn)行期庫(kù)的堆棧檢查函數(shù)
16.3 Summation示例應(yīng)用程序
第17章 內(nèi)存映射文件
17.1 內(nèi)存映射的可執(zhí)行文件和DLL文件
17.1.1 可執(zhí)行文件或DLL的多個(gè)實(shí)例不能共享靜態(tài)數(shù)據(jù)
17.1.2 在可執(zhí)行文件或DLL的多個(gè)實(shí)例之間共享靜態(tài)數(shù)據(jù)
17.1.3 APPInst示例應(yīng)用程序
17.2 內(nèi)存映射數(shù)據(jù)文件
17.2.1 方法1:一個(gè)文件一個(gè)緩存
17.2.2 方法2:兩個(gè)文件一個(gè)緩存
17.2.3 方法3:一個(gè)文件兩個(gè)緩存
17.2.4 方法4:一個(gè)文件,零緩存
17.3 使用內(nèi)存映射文件
17.3.1 步驟1:創(chuàng)建或打開(kāi)文件內(nèi)核對(duì)象
17.3.2 步驟2:創(chuàng)建一個(gè)文件映射內(nèi)核對(duì)象
17.3.3 步驟3:將文件數(shù)據(jù)映射到進(jìn)程的地址空間
17.3.4 步驟4:從進(jìn)程的地址空間中撤消文件數(shù)據(jù)的映像
17.3.5 步驟5和步驟6:關(guān)閉文件映射對(duì)象和文件對(duì)象
17.3.6 文件倒序示例應(yīng)用程序
17.4 使用內(nèi)存映射文件來(lái)處理大文件
17.5 內(nèi)存映射文件與數(shù)據(jù)視圖的相關(guān)性
17.6 設(shè)定內(nèi)存映射文件的基地址
17.7 實(shí)現(xiàn)內(nèi)存映射文件的具體方法
17.8 使用內(nèi)存映射文件在進(jìn)程之間共享數(shù)據(jù)
17.9 頁(yè)文件支持的內(nèi)存映射文件
17.10 稀疏提交的內(nèi)存映射文件
第18章 堆棧
18.1 進(jìn)程的默認(rèn)堆棧
18.2 為什么要?jiǎng)?chuàng)建輔助堆棧
18.2.1 保護(hù)組件
18.2.2 更有效的內(nèi)存管理
18.2.3 進(jìn)行本地訪問(wèn)
18.2.4 減少線程同步的開(kāi)銷(xiāo)
18.2.5 迅速釋放堆棧
18.3 如何創(chuàng)建輔助堆棧
18.3.1 從堆棧中分配內(nèi)存塊
18.3.2 改變內(nèi)存塊的大小
18.3.3 了解內(nèi)存塊的大小
18.3.4 釋放內(nèi)存塊
18.3.5 撤消堆棧
18.3.6 用C++程序來(lái)使用堆棧
18.4 其他堆棧函數(shù)
第四部分 動(dòng)態(tài)鏈接庫(kù)
第19章 DLL基礎(chǔ)
19.1 DLL與進(jìn)程的地址空間
19.2 DLL的總體運(yùn)行情況
19.3 創(chuàng)建DLL模塊
19.3.1 輸出的真正含義是什么
19.3.2 創(chuàng)建用于非Visual C++工具的DLL
19.4 創(chuàng)建可執(zhí)行模塊
19.5 運(yùn)行可執(zhí)行模塊
第20章 DLL的高級(jí)操作技術(shù)
20.1 DLL模塊的顯式加載和符號(hào)鏈接
20.1.1 顯式加載DLL模塊
20.1.2 顯式卸載DLL模塊
20.1.3 顯式鏈接到一個(gè)輸出符號(hào)
20.2 DLL的進(jìn)入點(diǎn)函數(shù)
20.2.1 DLL_PROCESS_ATTACH通知
20.2.2 DL_PROCESS_DETACH通知
20.2.3 DLL_THREAD_ATTACH通知
20.2.4 DLL_THREAD_DETACH通知
20.2.5 順序調(diào)用DllMain
20.2.6 DllMain與C/C++運(yùn)行期庫(kù)
20.3 延遲加載DLL
20.4 函數(shù)轉(zhuǎn)發(fā)器
20.5 已知的DLL
20.6 DLL轉(zhuǎn)移
20.7 改變模塊的位置
20.8 綁定模塊
第21章 線程本地存儲(chǔ)器
21.1 動(dòng)態(tài)TLS
21.2 靜態(tài)TLS
第22章 插DLL和掛接API
22.1 插入DLL:一個(gè)例子
22.2 使用注冊(cè)表來(lái)插入DLL
22.3 使用Windows掛鉤來(lái)插入DLL
22.4 使用遠(yuǎn)程線程來(lái)插入DLL
22.4.1 Inject Library示例應(yīng)用程序
22.4.2 Image Walk DLL
22.5 使用特洛伊DLL來(lái)插入DLL
22.6 將DLL作為調(diào)試程序來(lái)插入
22.7 用windows 98上的內(nèi)存映射文件插入代碼
22.8 用CreateProcess插入代碼
22.9 掛接API的一個(gè)示例
22.9.1 通過(guò)改寫(xiě)代碼來(lái)掛接API
22.9.2 通過(guò)操作模塊的輸入節(jié)來(lái)掛接API岡
22.9.3 LastMsgBoxInfo示例應(yīng)用程序
第五部分 結(jié)構(gòu)化異常處理
第23章 結(jié)束處理程序
23.1 通過(guò)例子理解結(jié)束處理程序
23.2 Funcensteinl
23.3 Funcenstein2
23.4 Funcenstein3
23.5 Funcfurter1
23.6 突擊測(cè)驗(yàn):FuncaDoodleDoo
23.7 Funcenstein4
23.8 Funcaramal
23.9 Funcarama2
23.10 Funcarama3
23.11 Funcarama4:最終的邊界
23.12 關(guān)于finally塊的說(shuō)明
23.13 Funcfurter2
23.14 SEH結(jié)束處理示例程序
第24章 異常處理程序和軟件異常
24.1 通過(guò)例子理解異常過(guò)濾器和異常處理程序
24.1.1 Funcmeister1
24.1.2 Funcmeister2
24.2 EXCEPTION_EXECUTE_HANDLER
24.2.1 一些有用的例子
24.2.2 全局展開(kāi)
24.2.3 暫停全局展開(kāi)
24.3 EXCEPTION_CONTINUE_EXECUTION
24.4 EXCEPTION_CONTINUE_SEARCH
24.5 Get Exception Code
24.6 Get Exception Information
24.7 軟件異常
第25章 未處理異常和C++異常
25.1 即時(shí)調(diào)試
25.2 關(guān)閉異常消息框
25.2.1 強(qiáng)制進(jìn)程終止運(yùn)行
25.2.2 包裝一個(gè)線程函數(shù)
25.2.3 包裝所有的線程函數(shù)
25.2.4 自動(dòng)調(diào)用調(diào)試程序
25.3 程序員自己調(diào)用UnhandledExceptionFilter
25.4 UnhandledExceptionFilter函數(shù)的一些細(xì)節(jié)
25.5 異常與調(diào)試程序
25.6 C++異常與結(jié)構(gòu)性異常的對(duì)比
第六部分 窗口
第26章 窗口消息
26.1 線程的消息隊(duì)列
26.2 將消息發(fā)送到線程的消息隊(duì)列中
26.3 向窗口發(fā)送消息
26.4 喚醒一個(gè)線程
26.4.1 隊(duì)列狀態(tài)標(biāo)志
26.4.2 從線程的隊(duì)列中提取消息的算法
26.4.3 利用內(nèi)核對(duì)象或隊(duì)列狀態(tài)標(biāo)志喚醒線程
26.5 通過(guò)消息發(fā)送數(shù)據(jù)
26.6 Windows如何處理ANSI/Unicode字符和字符串
第27章 硬件輸入模型和局部輸入狀態(tài)
27.1 原始輸入線程
27.2 局部輸入狀態(tài)
27.2.1 鍵盤(pán)輸入與焦點(diǎn)
27.2.2 鼠標(biāo)光標(biāo)管理
27.3 將虛擬輸入隊(duì)列同局部輸入狀態(tài)掛接在一起
27.3.1 LISLab示例程序
27.3.2 LISWatch示例程序
第七部分 附錄
附錄A 建立環(huán)境
附錄B 消息分流器、子控件宏和API宏

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)