Windows高級編程指南

Windows高級編程指南

《Windows高級編程指南》是1999年清華大學出版社出版的圖書,譯者是王書洪 / 劉光明,目前出已經出第三版。

基本介紹

  • 書名:Windows高級編程指南
  • 作者:(美)Jeffrey Richter 
  • 原版名稱:Advanced Windows
  • 譯者:王書洪 / 劉光明
  • ISBN:7302033285
  • 類別:計算機編程
  • 頁數:805
  • 定價:99.00元
  • 出版社:清華大學出版社
  • 出版時間:1999-6
內容介紹,作者介紹,目錄,

內容介紹

本書以詳盡資料和大量的範例深入討論了有關32位Windows編程的高級問題,包括進程和執行緒的管理、Win 32的記憶體管理、訊息處理、動態程式庫、檔案系統和設備輸入輸出、結構化異常處理、Unicode等,並重點討論了Windows 95Windows NT在實現上的不同之處,其中包含了大量的編程技巧。
本書可供高等院校計算機專業的師生和廣大的計算機編程人員使用。

作者介紹

Jeffrey Richter是一位在全球享有盛譽的技術作家,尤其在Windows/.NET領域有著傑出的貢獻。他的第一本Windows著作Windows 3: A Developer's Guide大獲好評,從而聲名遠揚。之後,他又推出了經典著作《Windows 高級編程指南》和《Windows核心編程》。如今這兩本書早已成為Windows程式設計領域的顛峰之作,培育了幾代軟體開發設計人員。他的每一本新作問世,我們都有理由相信這是一本巨著,我們想要的一切盡在其中。Jeffery 是Wintellect公司的創始人之一,也是MSDN雜誌.NET專欄的特邀編輯。現在他正領導開發該公司的.NET程式設計課程,向大眾推廣.NET技術。因為他自1999年開始就參與了微軟.NET框架開發組的諮詢工作,與這些一線人員一起經歷了.NET的孕育與誕生,所以他對.NET思想的領悟、對.NET的細節熟稔,是其他任何作家難以企及的。他是.NET著作領域中當之無愧的一面旗幟

目錄

第0章 緒論
0.1 關於應用程式範例
0.1.1 用c語言編寫程式
0.1.2 message cracker macros(訊息拆析宏)
0.1.3 有關16位windows編程的知識
0.1.4 在windows 95下運行應用程式範例
0.1.5 不相關代碼
0.1.6 範例應用程式的獨立性
0.1.7 strict編譯
0.1.8 錯誤檢查
0.1.9 沒有錯誤
0.1.10 測試平台和環境
0.1.11 unicode
0.2 安裝範例程式
0.2.1 配套的cd-rom盤
第1章 win 32 api和支持它的平台
1.1 夢想一下:win 32 api
1.2 win 32s
1.3 windows nt
1.4 windows 95
.1.5 windows ce
1.6 現實:win 32 api
第2章 核心對象
2.1 什麼是核心對象
2.1.1 使用計數
2.1.2 安全
2.2 進程的核心對象句柄表
2.2.1 創建核心對象
2.2.2 關閉核心對象
2.3 在進程間共享核心對象
2.3.1 對象句柄繼承
2.3.2 改變句柄標誌
2.3.3 命名對象
2.3.4 複製對象句柄
第3章 進程
3.1 編寫第一個win 32應用程式
3.1.1 進程的實例句柄
3.1.2 進程的前一個實例的句柄
3.1.3 進程的命令行
3.1.4 進程的環境變數
3.1.5 進程的錯誤模式
3.1.6 進程的當前驅動器和目錄
3.1.7 系統版本
3.2 createprocess函式
3.2.1 lpszapplicationname和lpszcommandline
3.2.2 lpsaprocess,lpsathread和finherithandles
3.2.3 fdwcreate
3.2.4 lpvenvironment
3.2.5 lpszcurdir
3.2.6 lpsistartinfo
3.2.7 lppiprocinfo
3.3 終止進程
3.3.1 exitprocess函式
3.3.2 terminate process函式
3.3.3 進程中的所有執行緒結束了
3.3.4 進程終結時發生的事情
3.4 子進程
3.4.1 運行分離的子進程
第4章 執行緒
4.1 何時創建執行緒
4.2 何時不用創建執行緒
4.3 編寫第一個執行緒函式
4.3.1 執行緒的棧
4.3.2 執行緒的context結構
4.3.3 執行緒的執行時間
4.4 createthread函式
4.4.1 lpsa
4.4.2 cbstack
4.4.3 lpstartaddr和lpvthreadparm
4.4.4 fdwcreate
4.4.5 lpidthread
4.5 終止執行緒
4.5.1 exit thread函式
4.5.2 terminatethread函式
4.5.3 進程終結
4.5.4 執行緒終結時的情況
4.6 識別自己的身份
4.7 系統如何調度執行緒
4.7.1 使用win 32 api怎樣賦優先權
4.7.2 改變進程的優先權類
4.7.3 設定執行緒的相對優先權
4.7.4 掛起和恢複線程
4.8 系統內部情況
4.9 進程、執行緒和c運行時庫
4.9.1 應避免使用的c運行時函式
第5章 win 32記憶體結構
5.1 虛地址空間
5.1.1 windows 95如何劃分進程的地址空間
5.1.2 windows nt如何劃分進程的地址空間
5.2 地址空間中的區域
5.3 在區域內提交物理存儲
5.4 物理存儲
5.4.1 不包含在頁面檔案中的物理存儲
5.5 保護屬性
5.5.1 寫拷貝訪問
5.5.2 特殊的訪問保護屬性標誌
5.6 小結
5.6.1 區域的內部
5.7 windows 95的地址空間的不同
第6章 虛擬記憶體
6.1 系統信息
6.1.1 系統信息範例應用程式
6.2 虛擬記憶體狀態
6.2.1 虛擬記憶體狀態範例應用程式
6.3 確定地址空間的狀態
6.3.1 vmquery函式
6.3.2 虛擬記憶體映射範例應用程式
第7章 在應用程式中使用虛擬記憶體
7.1 在地址空間中保留區域
7.2 在保留區域中提交存儲
7.3 同時保留區域和提交物理存儲
7.4 何時提交物理存儲
7.5 釋放物理存儲和釋放區域
7.5.1 何時釋放物理存儲
7.5.2 虛擬記憶體分配範例應用程式
7.6 修改保護屬性
7.7 在ram中鎖定物理存儲
7.8 重設物理存儲的內容
7.9 執行緒的棧
7.9.1 windows 95下的執行緒的棧
7.9.2 c運行時庫的棧檢查函式
第8章 記憶體映射檔案
8.1 記憶體映射exe和dll
8.1.1 不被exe或dll的多個實例共享的靜態數據
8.2 記憶體映射數據檔案
8.2.1 方法1:一個檔案,一個緩衝區
8.2.2 方法2:兩個檔案,一個緩衝區
8.2.3 方法3:一個檔案,兩個緩衝區
8.2.4 方法4:一個檔案,零個緩衝區
8.3 使用記憶體映射檔案
8.3.1 第1步:創建或打開檔案核心對象
8.3.2 第2步:創建檔案映射核心對象
8.3.3 第3步:將檔案數據映射入進程地址空間
8.3.4 第4步:從進程地址空間中解除檔案數據映射
8.3.5 第5步和第6步:關閉檔案映射對象和檔案對象
8.3.6 用記憶體映射檔案處理大檔案
8.4 記憶體映射檔案和一致性
8.4.1 檔案倒置範例應用程式
8.4.2 指定記憶體映射檔案的基本地址
8.5 記憶體映射檔案和win 32實現
8.5.1 使用記憶體映射檔案在進程間共享數據
8.5.2 由頁面檔案支持的記憶體映射檔案
8.5.3 記憶體映射檔案共享範例應用程式
8.6 稀疏提交的記憶體映射檔案
第9章 堆
9.1 什麼是win 32堆
9.1.1 進程的預設堆
9.1.2 創建自己的win 32堆
9.1.3 創建win 32堆
9.1.4 釋放win 32堆
9.1.5 在c++時使用堆
9.1.6 其他一些堆函式
9.2 16位windows堆函式
第10章 執行緒同步
10.1 執行緒同步概述
10.2 最壞的事情
10.2.1 創建監臨界區
10.2.2 使用臨界區
10.2.3 臨界區範例應用程式
10.3 用核心對象同步執行緒
10.3.1 互斥量
10.3.2 互斥量範例應用程式
10.3.3 信號量
10.3.4 超市範例應用程式
10.3.5 事件
10.3.6 bucket of balls範例應用程式
10.3.7 swmrg複合同步對象
10.3.8 bucket範例原始碼
10.3.9 document statistics範例應用程式
10.3.10 可等的計時器
10.4 執行緒掛起
10.4.1 sleep
10.4.2 異步檔案i/o
10.4.3 waitforlnputidle
10.4.4 msgwaitformultipleobjects
10.4.5 waitfordebugevent
10.4.6 signalobjectandwait
10.4.7 interlocked函式族
第11章 視窗訊息和異步輸入
11.1 多任務
11.1.1 搶先式調度
11.2 執行緒佇列和訊息處理
11.2.1 win 32訊息佇列結構
11.2.2 向執行緒的訊息佇列投遞訊息
11.2.3 傳送訊息給視窗
11.2.4 喚醒執行緒
11.3 用訊息傳送數據
11.3.1 copydata範例應用程式
11.4 非序列化輸入
11.4.1 輸入如何被非序列化
11.5 局部輸入狀態
11.5.1 鍵盤輸入和焦點
11.5.2 滑鼠游標管理
11.5.3 局部輸入狀態實驗範例應用程式
第12章 動態程式庫
12.1 創建動態連結
12.1.1 映射dll到進程的地址空間
12.2 dll的進入/退出函式
12.2.1 dll_process_attach
12.2.2 dll_process_datach
12.2.3 dll_thread_attach
12.2.4 dll_thread_detach
12.2.5 系統如何序列化對dllmain的調用
12.2.6 dllmain和c運行時庫
12.3 從dll中輸出函式和變數
12.4 從dll中引入函式和變數
12.4.1 dll的頭檔案
12.5 創建dll供非visual c++工具使用
12.6 在exe或dll映射之間共享數據
12.6.1 exe或dll中的節
12.6.2 moduse範例應用程式
12.6.3 multinst範例應用程式
第13章 執行緒局部存儲
13.1 動態執行緒局部存儲
13.1.1 使用動態執行緒局部存儲
13.1.2 動態執行緒局部存儲範例應用程式
13.2 靜態執行緒局部存儲
13.2.1 靜態執行緒局部存儲範例應用程式
第14章 檔案系統
14.1 win 32的檔案名稱約定
14.2 系統和卷操作
14.2.1 得到卷的特定信息
14.2.2 磁碟信息查看範例應用程式
14.3 目錄操作
14.3.1 得到當前目錄
14.3.2 改變當前目錄
14.3.3 得到系統目錄
14.3.4 得到windows目錄
14.3.5 創建和刪除目錄
14.4 拷貝、刪除、移動和重命名檔案
14.4.1 拷貝檔案
14.4.2 刪除檔案
14.4.3 移動檔案
14.4.4 重命名檔案
14.5 查找檔案
14.5.1 目錄漫遊範例應用程式
14.6 檔案系統變化通知
14.6.1 檔案變化範例應用程式
14.7 操縱檔案屬性
14.7.1 執行檔類型
14.7.2 檔案屬性
14.7.3 檔案大小
14.7.4 檔案時間戳
14.8 創建臨時檔案
第15章 設備i/o
15.1 打開和關閉設備
15.1.1 createfile
15.2 使用檔案設備
15.2.1 定位檔案指針
15.2.2 設定檔案尾
15.2.3 加鎖和解鎖檔案的區域
15.3 進行同步i/o
15.3.1 向設備強制刷新數據
15.4 進行異步i/o
15.5 使設備核心對象有信號
15.6 使事件核心對象有信號
15.7 告警i/o
15.7.1 告警i/o範例應用程式
15.8 i/o完成連線埠
15.8.1 模擬完成i/o請求
15.8.2 i/o完成連線埠範例應用程式
15.9 判斷i/o請求是否完成
15.10 取消未完成的i/o請求
第16章 結構化異常處理
16.1 終止處理程式
16.1.1 理解終止處理程式
16.1.2 關於finally塊的一些註解
16.1.3 seh終止範例應用程式
16.2 異常過濾程式和異常處理程式
16.2.1 理解異常過濾程式和異常處理程式
16.2.2 exception_execute_handler
16.2.3 exception_continue_execution
16.2.4 exception_continue_search
16.2.5 全局展開
16.2.6 停止全避展開
16.2.7 關於異常過濾程式的進一步討論
16.2.8 getexceptioninformation
16.2.9 seh異常範例應用程式
16.2.10 seh sum範例應用程式
16.3 軟體異常
16.3.1 seh軟體異常範例應用程式
16.3.2 未處理的異常
16.3.3 沒有附屬調試器的未和的異常
16.3.4 不顯示異常訊息框
16.3.5 自己調用unhandledexceptionfilter
16.3.6 windows nt的未處理的核心模式異常
第17章 unicode
17.1 字元集
17.1.1 單位元組和雙位元組字元集
17.1.2 unicode:寬位元組字元集
17.2 為什麼要使用unicode
17.3 如何編寫unicode原始碼
17.3.1 windows nt和unicode
17.3.2 windows 95和unicode
17.3.3 c運行時庫對unicode的支持
17.3.4 win 32定義的unicode數據類型
17.3.5 win 32中的unicode和ansi宏數
17.4 使你的程式能識別ansi和unicode
17.4.1 win 32中的字元串函式
17.4.2 資源
17.4.3 文本
17.4.4 在unicode和ansi之間轉換字元串
17.4.5 windows nt的視窗類和過程
第18章 打開進程邊界
18.1 為什麼要打開進程邊界:一個例子
18.2 使用註冊表來注入dll
18.3 使用windows鉤來注入dll
18.3.1 desktop item position savev工具
18.4 使用遠程執行緒注入dll
18.4.1 如何裝入一個dll
18.5 影響其他進程的win 32函式
18.5.1 createremotethread
18.5.2 getthreadcontext和setthreadcontext
18.5.3 virtualqueryex和virtualprotectex
18.5.4 virtualallocex和virtualfreeex
18.5.5 readprocessmemory和writeprocessmemory
18.6 創建一個函式向任意進程的地址空間注入dll
18.6.1 版本0:為什麼顯然的方法不能工作
18.6.2 版本1:手編的機器語言
18.6.3 版本2:allocprocessmemory和createremore thread
18.6.4 procmem工具函式
18.6.5 injectlib函式
18.7 測試injectlib函式
18.7.1 注入庫範例應用程式
18.7.2 映象遍歷動態程式庫
18.8 小結
附錄 a fibers
a.1 例程:計算器應用程式
附錄 b message crackerc
b.1 message crackers
b.2 child control宏
b.3 api宏
附錄 c 編程環境
c.1 cmnhdr.h頭檔案
c.1.1 4級警告
c.1.1 windows版本
c.1.2 strict宏
c.1.3 cpu prtability宏
c.1.4 標準編碼(unicode)
c.1.5 chdimof宏
c.1.6 chbegintheadex宏
c.1.7 chassert 宏和chverify宏
c.1.8 chhandle_dlgmsg宏
c.1.9 chassert宏和chverify宏
c.1.10 chmb宏
c.1.11 chinitstruct宏
c.1.12 chsetdlgicons宏
c.1.13 chwarnifunicodeunderwin 95宏
c.1.14 pragma message helper宏
c.1.15 連結指令
c.2 在源檔案中不能對項目進行設定

相關詞條

熱門詞條

聯絡我們