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

Windows核心編程

Windows核心編程

定 價:¥86.00

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

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

內(nèi)容簡介

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

作者簡介

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

圖書目錄

譯者序
前言
第一部分 程序員必讀
第1章 對程序錯誤的處理
1.1 定義自己的錯誤代碼
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 需要注意的問題
2.7 對COM的簡單說明
2.8 如何編寫Unicode源代碼
2.8.1 C運(yùn)行期庫對Unicode的支持
2.8.2 Windows定義的Unicode數(shù)據(jù)類型
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)核對象
3.1 什么是內(nèi)核對象
3.1.1 內(nèi)核對象的使用計數(shù)
3.1.2 安全性
3.2 進(jìn)程的內(nèi)核對象句柄表
3.2.1 創(chuàng)建內(nèi)核對象
3.2.2 關(guān)閉內(nèi)核對象
3.3 跨越進(jìn)程邊界共享內(nèi)核對象
3.3.1 對象句柄的繼承性
3.3.2 改變句柄的標(biāo)志
3.3.3 命名對象
3.3.4 終端服務(wù)器的名字空間
3.3.5 復(fù)制對象句柄
第二部分 編程的具體方法
第4章 進(jìn)程
4.1 編寫第一個Windows應(yīng)用程序
4.1.1 進(jìn)程的實例句柄
4.1.2 進(jìn)程的前一個實例句柄
4.1.3 進(jìn)程的命令行
4.1.4 進(jìn)程的環(huán)境變量
4.1.5 進(jìn)程的親緣性
4.1.6 進(jìn)程的錯誤模式
4.1.7 進(jìn)程的當(dāng)前驅(qū)動器和目錄
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)入點函數(shù)返回
4.3.2 ExitProcess函數(shù)
4.3.3 TerminateProcess函數(shù)
4.3.4 進(jìn)程終止運(yùn)行時出現(xiàn)的情況
4.4 子進(jìn)程
4.5 枚舉系統(tǒng)中運(yùn)行的進(jìn)程
第5章 作業(yè)
5.1 對作業(yè)進(jìn)程的限制
5.2 將進(jìn)程放入作業(yè)
5.3 終止作業(yè)中所有進(jìn)程的運(yùn)行
5.4 查詢作業(yè)統(tǒng)計信息
5.5 作業(yè)通知信息
5.6 JobLab示例應(yīng)用程序
第6章 線程的基礎(chǔ)知識
6.1 何時創(chuàng)建線程
6.2 何時不能創(chuàng)建線程
6.3 編寫第一個線程函數(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)行時撤消線程
6.5.5 線程終止運(yùn)行時發(fā)生的操作
6.6 線程的一些性質(zhì)
6.7 C/C++運(yùn)行期庫的考慮
6.7.1 Oops——錯誤地調(diào)用了CreateThread
6.7.2 不應(yīng)該調(diào)用的C/C++運(yùn)行期庫函數(shù)
6.8 對自己的ID概念應(yīng)該有所了解
第7章 線程的調(diào)度、優(yōu)先級和親緣性
7.1 暫停和恢復(fù)線程的運(yùn)行
7.2 暫停和恢復(fù)進(jìn)程的運(yùn)行
7.3 睡眠方式
7.4 轉(zhuǎn)換到另一個線程
7.5 線程的運(yùn)行時間
7.6 運(yùn)用環(huán)境結(jié)構(gòu)
7.7 線程的優(yōu)先級
7.8 對優(yōu)先級的抽象說明
7.9 程序的優(yōu)先級
7.9.1 動態(tài)提高線程的優(yōu)先級等級
7.9.2 為前臺進(jìn)程調(diào)整調(diào)度程序
7.9.3 Scheduling Lab示例應(yīng)用程序
7.10 親緣性
第8章 用戶方式中線程的同步
8.1 原子訪問:互鎖的函數(shù)家族
8.2 高速緩存行
8.3 高級線程同步
8.4 關(guān)鍵代碼段
8.4.1 關(guān)鍵代碼段準(zhǔn)確的描述
8.4.2 關(guān)鍵代碼段與循環(huán)鎖
8.4.3 關(guān)鍵代碼段與錯誤處理
8.4.4 非常有用的提示和技巧
第9章 線程與內(nèi)核對象的同步
9.1 等待函數(shù)
9.2 成功等待的副作用
9.3 事件內(nèi)核對象
9.4 等待定時器內(nèi)核對象
9.4.1 讓等待定時器給APC項排隊
9.4.2 定時器的松散特性
9.5 信標(biāo)內(nèi)核對象
9.6 互斥對象內(nèi)核對象
9.6.1 釋放問題
9.6.2 互斥對象與關(guān)鍵代碼段的比較
9.6.3 Queue示例應(yīng)用程序
9.7 線程同步對象速查表
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 實現(xiàn)關(guān)鍵代碼段:Optex
10.2 創(chuàng)建線程安全的數(shù)據(jù)類型和反信標(biāo)
10.3 單個寫入程序/多個閱讀程序的保護(hù)
10.4 實現(xiàn)一個WaitForMultipleExpressions函數(shù)
第11章 線程池的使用
11.1 方案1:異步調(diào)用函數(shù)
11.2 方案2:按規(guī)定的時間間隔調(diào)用函數(shù)
11.3 方案3:當(dāng)單個內(nèi)核對象變?yōu)橐淹ㄖ獱顣r調(diào)用函數(shù)
11.4 方案4:當(dāng)異步I/O請求完成運(yùn)行時調(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指針分配的分區(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ū)域中的物理存儲器
13.5 物理存儲器與頁文件
13.6 保護(hù)屬性
13.6.1 Copy-on-Write訪問
13.6.2 特殊的訪問保護(hù)屬性的標(biāo)志
13.7 綜合使用所有的元素
13.7.1 區(qū)域的內(nèi)部情況
13.7.2 與Windows 98地址空間的差別
13.8 數(shù)據(jù)對齊的重要性
第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 在地址空間中保留一個區(qū)域
15.2 在保留區(qū)域中的提交存儲器
15.3 同時進(jìn)行區(qū)域的保留和內(nèi)存的提交
15.4 何時提交物理存儲器
15.5 回收虛擬內(nèi)存和釋放地址空間區(qū)域
15.5.1 何時回收物理存儲器
15.5.2 虛擬內(nèi)存分配的示例應(yīng)用程序
15.6 改變保護(hù)屬性
15.7 清除物理存儲器的內(nèi)容
15.8 地址窗口擴(kuò)展——適用于Windows 2000
第16章 線程的堆棧
16.1 Windows 98下的線程堆棧
16.2 C/C++運(yùn)行期庫的堆棧檢查函數(shù)
16.3 Summation示例應(yīng)用程序
第17章 內(nèi)存映射文件
17.1 內(nèi)存映射的可執(zhí)行文件和DLL文件
17.1.1 可執(zhí)行文件或DLL的多個實例不能共享靜態(tài)數(shù)據(jù)
17.1.2 在可執(zhí)行文件或DLL的多個實例之間共享靜態(tài)數(shù)據(jù)
17.1.3 APPInst示例應(yīng)用程序
17.2 內(nèi)存映射數(shù)據(jù)文件
17.2.1 方法1:一個文件一個緩存
17.2.2 方法2:兩個文件一個緩存
17.2.3 方法3:一個文件兩個緩存
17.2.4 方法4:一個文件,零緩存
17.3 使用內(nèi)存映射文件
17.3.1 步驟1:創(chuàng)建或打開文件內(nèi)核對象
17.3.2 步驟2:創(chuàng)建一個文件映射內(nèi)核對象
17.3.3 步驟3:將文件數(shù)據(jù)映射到進(jìn)程的地址空間
17.3.4 步驟4:從進(jìn)程的地址空間中撤消文件數(shù)據(jù)的映像
17.3.5 步驟5和步驟6:關(guān)閉文件映射對象和文件對象
17.3.6 文件倒序示例應(yīng)用程序
17.4 使用內(nèi)存映射文件來處理大文件
17.5 內(nèi)存映射文件與數(shù)據(jù)視圖的相關(guān)性
17.6 設(shè)定內(nèi)存映射文件的基地址
17.7 實現(xiàn)內(nèi)存映射文件的具體方法
17.8 使用內(nèi)存映射文件在進(jìn)程之間共享數(shù)據(jù)
17.9 頁文件支持的內(nèi)存映射文件
17.10 稀疏提交的內(nèi)存映射文件
第18章 堆棧
18.1 進(jìn)程的默認(rèn)堆棧
18.2 為什么要創(chuàng)建輔助堆棧
18.2.1 保護(hù)組件
18.2.2 更有效的內(nèi)存管理
18.2.3 進(jìn)行本地訪問
18.2.4 減少線程同步的開銷
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++程序來使用堆棧
18.4 其他堆棧函數(shù)
第四部分 動態(tài)鏈接庫
第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的高級操作技術(shù)
20.1 DLL模塊的顯式加載和符號鏈接
20.1.1 顯式加載DLL模塊
20.1.2 顯式卸載DLL模塊
20.1.3 顯式鏈接到一個輸出符號
20.2 DLL的進(jì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)行期庫
20.3 延遲加載DLL
20.4 函數(shù)轉(zhuǎn)發(fā)器
20.5 已知的DLL
20.6 DLL轉(zhuǎn)移
20.7 改變模塊的位置
20.8 綁定模塊
第21章 線程本地存儲器
21.1 動態(tài)TLS
21.2 靜態(tài)TLS
第22章 插DLL和掛接API
22.1 插入DLL:一個例子
22.2 使用注冊表來插入DLL
22.3 使用Windows掛鉤來插入DLL
22.4 使用遠(yuǎn)程線程來插入DLL
22.4.1 Inject Library示例應(yīng)用程序
22.4.2 Image Walk DLL
22.5 使用特洛伊DLL來插入DLL
22.6 將DLL作為調(diào)試程序來插入
22.7 用windows 98上的內(nèi)存映射文件插入代碼
22.8 用CreateProcess插入代碼
22.9 掛接API的一個示例
22.9.1 通過改寫代碼來掛接API
22.9.2 通過操作模塊的輸入節(jié)來掛接API岡
22.9.3 LastMsgBoxInfo示例應(yīng)用程序
第五部分 結(jié)構(gòu)化異常處理
第23章 結(jié)束處理程序
23.1 通過例子理解結(jié)束處理程序
23.2 Funcensteinl
23.3 Funcenstein2
23.4 Funcenstein3
23.5 Funcfurter1
23.6 突擊測驗:FuncaDoodleDoo
23.7 Funcenstein4
23.8 Funcaramal
23.9 Funcarama2
23.10 Funcarama3
23.11 Funcarama4:最終的邊界
23.12 關(guān)于finally塊的說明
23.13 Funcfurter2
23.14 SEH結(jié)束處理示例程序
第24章 異常處理程序和軟件異常
24.1 通過例子理解異常過濾器和異常處理程序
24.1.1 Funcmeister1
24.1.2 Funcmeister2
24.2 EXCEPTION_EXECUTE_HANDLER
24.2.1 一些有用的例子
24.2.2 全局展開
24.2.3 暫停全局展開
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 即時調(diào)試
25.2 關(guān)閉異常消息框
25.2.1 強(qiáng)制進(jìn)程終止運(yùn)行
25.2.2 包裝一個線程函數(shù)
25.2.3 包裝所有的線程函數(shù)
25.2.4 自動調(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)性異常的對比
第六部分 窗口
第26章 窗口消息
26.1 線程的消息隊列
26.2 將消息發(fā)送到線程的消息隊列中
26.3 向窗口發(fā)送消息
26.4 喚醒一個線程
26.4.1 隊列狀態(tài)標(biāo)志
26.4.2 從線程的隊列中提取消息的算法
26.4.3 利用內(nèi)核對象或隊列狀態(tài)標(biāo)志喚醒線程
26.5 通過消息發(fā)送數(shù)據(jù)
26.6 Windows如何處理ANSI/Unicode字符和字符串
第27章 硬件輸入模型和局部輸入狀態(tài)
27.1 原始輸入線程
27.2 局部輸入狀態(tài)
27.2.1 鍵盤輸入與焦點
27.2.2 鼠標(biāo)光標(biāo)管理
27.3 將虛擬輸入隊列同局部輸入狀態(tài)掛接在一起
27.3.1 LISLab示例程序
27.3.2 LISWatch示例程序
第七部分 附錄
附錄A 建立環(huán)境
附錄B 消息分流器、子控件宏和API宏

本目錄推薦

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