Windows API開發詳解--函式

基本信息

【作者】範文慶 周彬彬 安靖【編輯】蔣佳

【ISBN】978-7-115-24427-7【日期】2011-3

【版次】1【印次】1

【頁數】612頁【字數】956千字

【開本】16【定價】79元

內容提要

Windows 7是微軟公司推出的最新的桌面作業系統,本書採用圖解的方式以及生動的操作實例,圖文並茂地向用戶介紹了Windows 7作業系統。

本書共分12講,第1~第4講介紹了Windows 7的新特性及安裝、Windows 7的基本操作、如何自定義桌面以及Windows資源管理器的操作,使讀者可以很快掌握Windows 7的基本操作。第5~第8講主要講解了Windows 7常用的組件、如何播放和製作多媒體檔案以及網際網路的相關知識,通過實例的講解,讀者可以很快掌握Windows 7日常工作和娛樂所需的操作。第9~第12講主要介紹了用戶賬戶的管理、軟硬體的添加與刪除、系統的日常維護及安全防護方面的知識,讀者通過這幾講的學習可以初步掌握Windows 7系統維護方面的知識。

本書頗具特色之處是將重點課程錄製成了視頻,配有全程語音講解,還配有每講的PPT課件,都收錄在本書所附光碟中,可作為讀者學習時的參考和嚮導。

本書充分考慮了初學者的實際需要,真正“從零開始”。學習本書,可以使對計算機“一點都不懂”的讀者輕鬆掌握Windows 7的基本知識和基本操作。

目錄

第1章 Windows應用程式開發入門 1

1.1 第一個實例程式 1

1.1.1 start.exe 1

1.1.2 Windows API 2

1.1.3 程式入口函式 2

1.1.4 start.c代碼分析 2

1.2 編譯代碼 3

1.2.1 安裝Visual Studio 4

1.2.2 安裝Microsoft Platform SDK 4

1.2.3 集成Microsoft Platform SDK與Visual C++速成版 6

1.2.4 Windows 7 SDK與Visual Studio 2010 7

1.2.5 Visual Studio專業版或團隊系統版 7

1.2.6 使用圖形化IDE建立工程、進行編譯 7

1.2.7 “解決方案”與“工程” 9

1.2.8 使用命令行工具編譯 9

第2章 Windows API概要 10

2.1 Windows數據類型 10

2.1.1 Windows數據類型示例 10

2.1.2 Windows數據類型與標準C數據類型的關係 14

2.1.3 Windows數據類型與Windows API 14

2.1.4 Windows中的數據結構 15

2.2 Windows API的功能分類 16

2.2.1 系統基本服務 16

2.2.2 系統管理 18

2.2.3 用戶界面 18

2.2.4 圖像和多媒體 21

2.2.5 網路 21

2.2.6 系統安全 21

2.2.7 其他功能 22

2.3 Windows API核心DLL 22

2.3.1 Kernel32.dll 22

2.3.2 User32.dll 23

2.3.3 Gdi32.dll 23

2.3.4 標準C函式及Crtdll_dll 23

2.3.5 其他Dll 23

2.4 Unicode和多位元組 23

2.4.1 W版本和A版本的API 25

2.4.2 Unicode與ASCII的轉換 26

2.5 對Windows程式設計規範的建議 26

第3章 開發工具配置與使用 28

3.1 使用Visual C/C++編譯連結工具 28

3.1.1 編譯器cl.exe 29

3.1.2 資源編譯器rc.exe 34

3.1.3 連結器link.exe 35

3.1.4 其他工具 41

3.1.5 編譯連結工具依賴的環境變數 42

3.1.6 示例:使用/D選項進行條件編譯 46

3.2 使用Platform SDK 47

3.2.1 Platform SDK的目錄結構與功能 47

3.2.2 為編譯連結工具設定環境變數 48

3.2.3 Platform SDK工具集 50

3.2.4 Windows Vista SDK 52

3.3 編寫Makefile 52

3.3.1 使用nmake.exe構建工程 52

3.3.2 Makefile實例 54

3.3.3 注釋 55

3.3.4 宏 55

3.3.5 描述塊:目標、依賴項和命令 57

3.3.6 makefile預處理 60

3.3.7 在Platform SDK的基礎上使用nmake 61

3.3 使用WinDbg調試 62

3.4.1 安裝WinDbg 63

3.4.2 編譯可調試的程式 64

3.4.3 WinDbg命令 64

3.4.4 調試過程演示 65

3.5 集成開發環境Visual Studio 68

3.5.1 工程類型選擇與配置 68

3.5.2 Visual Studio捷徑 70

3.5.3 生成項目 70

3.5.4 調試 71

3.5.5 選項與設定 71

3.6 開發環境配置總結 72

第4章 檔案系統 73

4.1 概述 73

4.1.1 檔案系統的基本概念 73

4.1.2 檔案系統主要API 74

4.2 磁碟和驅動器管理 76

4.2.1 遍歷卷並獲取屬性 76

4.2.2 操作驅動器掛載點 83

4.2.3 判斷光碟機中是否有光碟 88

4.2.4 獲取磁碟分區的總容量、空閒容量、簇、扇區信息 91

4.3 檔案和目錄管理 94

4.3.1 刪除、複製、重命名、移動檔案 95

4.3.2 創建、打開、讀寫檔案,獲取檔案大小 98

4.3.3 創建目錄 105

4.3.4 獲取程式所在的目錄、程式模組路徑,獲取和設定當前目錄 106

4.3.5 查找檔案、遍歷指定目錄下的檔案和子目錄 110

4.3.6 遞歸遍歷目錄樹 113

4.3.7 獲取、設定檔案屬性和時間 115

4.4 記憶體映射檔案 122

4.4.1 使用Mapping File提高檔案讀寫的效率 122

4.4.2 通過Mapping File在進程間傳遞和共享數據 127

4.4.3 通過檔案句柄獲得檔案路徑 130

4.5 總結 134

第5章 記憶體管理 135

5.1 Windows記憶體管理原理 135

5.1.1 基本概念 135

5.1.2 分頁與分段記憶體管理、記憶體映射與地址轉換 136

5.1.3 進程的記憶體空間 138

5.1.4 虛擬記憶體布局、記憶體的分工、堆與棧 140

5.1.5 記憶體的保護屬性和存取許可權 140

5.1.6 本章API列表 141

5.2 堆管理 142

5.2.1 獲取堆句柄、分配與再分配堆 142

5.2.2 獲取堆中記憶體塊的大小信息 147

5.2.3 釋放記憶體、銷毀堆 148

5.3 全局(Global)和局部(Local)記憶體管理 150

5.3.1 Global函式 150

5.3.2 Local函式 152

5.3.3 使用全局和局部函式分配和釋放記憶體、改變記憶體塊屬性 152

5.4 虛擬記憶體管理 153

5.4.1 虛擬地址空間與記憶體分頁 153

5.4.2 分配和釋放可讀可寫的虛擬記憶體頁面 154

5.4.3 修改記憶體頁面狀態和保護屬性、將頁面鎖定在物理記憶體中 158

5.4.4 管理其他進程的虛擬記憶體 159

5.5 記憶體操作與記憶體信息管理 159

5.5.1 複製、填充、移動、清零記憶體塊、防止緩衝區溢出 160

5.5.2 獲得當前系統記憶體使用情況 162

5.5.3 判斷記憶體指針的可用性 163

5.6 各種記憶體分配方式的關係與比較 165

5.6.1 標準C記憶體管理函式與Windows記憶體管理API的關係 165

5.6.2 功能性區別 165

5.6.3 效率的區別 166

第6章 進程、執行緒和模組 167

6.1 基本概念 167

6.1.1 應用程式與進程 167

6.1.2 控制台應用程式與圖形用戶界面應用程式 168

6.1.3 動態程式庫、模組 168

6.1.4 執行緒、纖程與作業 169

6.1.5 許可權與優先權 170

6.2 進程管理 170

6.2.1 創建進程、獲取進程相關信息、獲取啟動參數 170

6.2.2 編寫控制台程式和圖形用戶界面應用程式 176

6.2.3 獲取和設定環境變數 176

6.3 執行緒、纖程 180

6.3.1 創建執行緒、退出執行緒、獲取執行緒信息 180

6.3.2 掛起、恢復、切換、終止執行緒 183

6.3.3 創建遠程執行緒、將代碼注入其他進程中執行 186

6.3.4 創建纖程、刪除纖程、調度纖程 190

6.3.5 纖程與執行緒的互相轉換 191

6.4 進程狀態信息 197

6.4.1 PS API與Tool help API 197

6.4.2 遍歷系統中的進程 199

6.4.3 列舉進程的模組、執行緒 203

6.4.4 進程的堆使用、記憶體占用、虛擬記憶體大小,頁面錯誤情況 205

6.5 動態程式庫 207

6.5.1 載入、釋放DLL、通過句柄獲取DLL相關信息 207

6.5.2 編寫動態程式庫、導出函式 208

6.5.3 創建動態程式庫工程,配置DLL編譯連結選項 210

6.5.4 運行時動態獲取DLL導出函式地址並調用 211

6.5.5 聲明導出函式、創建lib庫,為其他模組提供導入表調用接口 213

6.5.6 通過構建導入表調用DLL導出函式 213

第7章 執行緒同步 215

7.1 基本原理 215

7.1.1 執行緒同步的過程 216

7.1.2 同步對象 216

7.1.3 等待函式 216

7.2 同步對象示例 217

7.2.1 使用事件對象(Event) 217

7.2.2 使用互斥對象(Mutex) 223

7.2.3 使用信號量控制訪問共享數據的執行緒數量 227

7.2.4 使用可等待計時器(Timer) 231

7.3 等待進程和執行緒的執行完成 235

第8章 服務 236

8.1 基本概念 236

8.1.1 服務控制器(SCM) 237

8.1.2 服務程式 237

8.1.3 服務控制管理程式 237

8.1.4 系統服務管理工具 237

8.1.5 服務的屬性 237

8.2 編寫服務程式 238

8.2.1 入口函式 238

8.2.2 服務主函式 238

8.2.3 控制處理函式 239

8.3 實現對服務的控制和管理 243

8.3.1 創建、刪除服務 243

8.3.2 啟動、停止服務,向服務傳送控制請求 246

8.3.3 管理服務狀態、配置服務、服務的依賴關係 250

第9章 圖形用戶界面 257

9.1 字元界面程式 257

9.1.1 基本概念 258

9.1.2 控制台讀寫 259

9.1.3 控制台字型、顏色等屬性,操作螢幕快取 263

9.1.4 控制台事件 274

9.2 圖形用戶界面:基本概念 276

9.2.1 視窗 276

9.2.2 視窗類 277

9.2.3 訊息和訊息處理函式 277

9.2.4 控制項 277

9.2.5 資源 278

9.2.6 對話框 278

9.3 圖形用戶界面:視窗 278

9.3.1 註冊視窗類 280

9.3.2 創建視窗 281

9.3.3 視窗訊息處理函式 284

9.3.4 視窗屬性、位置和大小 287

9.3.5 視窗顯示方式 289

9.3.6 執行緒訊息佇列和訊息循環 289

9.4 圖形用戶界面:控制項 290

9.4.1 Tree View控制項 290

9.4.2 為Tree View控制項增加節點 292

9.4.3 Tree View右鍵選單 294

9.4.4 List View控制項 296

9.4.5 為List View控制項增加分列 298

9.4.6 為List View控制項增加項 299

9.4.7 文本框控制項 300

9.4.8 為文本框控制項設定文字 301

9.5 界面資源 302

9.5.1 資源腳本(.rc) 302

9.5.2 資源ID定義和頭檔案 305

9.5.3 在程式中使用資源 306

9.6 選單 307

9.6.1 選單資源和選單句柄 307

9.6.2 動態增加、刪除、設定選單及選單項 308

9.6.3 選單訊息處理 308

9.7 對話框 309

9.7.1 創建對話框 309

9.7.2 對話框訊息處理函式 310

第10章 系統信息的管理 312

10.1 Windows系統信息 312

10.1.1 獲取系統版本 312

10.1.2 獲取計算機硬體信息 315

10.1.3 獲取系統目錄等信息 317

10.1.4 用戶名、計算機名、域名 318

10.1.5 處理系統顏色信息、尺度信息等 320

10.1.6 滑鼠、鍵盤等外設信息 320

10.2 時間信息 322

10.2.1 設定、獲取系統時間 322

10.2.2 獲取開機至現在持續的時間 323

10.2.3 檔案時間與系統時間的轉換 323

10.3 註冊表 324

10.3.1 註冊表的作用及組織形式 324

10.3.2 鍵、子鍵、鍵屬性及鍵值的相關操作 325

10.3.3 列舉註冊表項及鍵值 328

10.3.4 通過註冊表設定一個自啟動的程式 330

10.3.5 設定隨程式啟動而啟動的調試器(任何程式) 331

10.3.6 指定程式崩潰實時調試器 331

第11章 進程間通信 332

11.1 郵槽(MailSlot) 332

11.1.1 創建郵槽、從郵槽中讀取訊息 333

11.1.2 通過郵槽傳送訊息 336

11.2 管道(Pipe) 338

11.2.1 創建命名管道 338

11.2.2 管道監聽 340

11.2.3 使用異步I/O進行讀寫 341

11.2.4 關閉管道實例 345

11.2.5 客戶端 346

11.3 剪貼簿 349

11.3.1 獲取、設定剪貼簿數據 349

11.3.2 監視剪貼簿 356

11.3.3 剪貼簿數據格式 366

11.4 數據複製訊息(WM_COPYDATA) 368

11.4.1 數據傳送端 368

11.4.2 數據接收端 371

11.5 其他進程間通信方式 373

11.5.1 動態數據交換(DDE)和網路動態數據交換(NDDE) 373

11.5.2 通過File Mapping在進程間共享數據 374

11.5.3 Windows Socket 374

第12章 Windows Shell程式設計 375

12.1 Windows Shell目錄管理 376

12.1.1 Shell對目錄和檔案的管理形式 376

12.1.2 “我的文檔”等特殊目錄相關操作 376

12.1.3 接口綁定、目錄遍歷以及檔案對象屬性獲取 378

12.1.4 瀏覽檔案對話框 380

12.2 檔案協助(File Associations) 382

12.2.1 檔案類型相關註冊表鍵值 382

12.2.2 為檔案指定默認打開程式 383

12.2.3 定製檔案類型的圖示 384

12.3 Shell擴展 384

12.3.1 對象及概念 385

12.3.2 CLSID,處理例程的GUID 386

12.3.3 註冊Shell擴展 387

12.3.4 COM程式開發基礎 388

12.3.5 編寫Handler程式 388

12.3.6 Shell擴展程式的調試 406

12.3.7 總結 406

12.4 系統列通知區域(Tray)圖示 407

12.4.1 創建圖示視窗 408

12.4.2 創建圖示和圖示選單 412

12.4.3 最小化主視窗到通知區域 414

12.4.4 彈出氣泡通知 417

12.4.5 動態圖示 418

12.4.6 其他功能 421

第13章 Windows GDI 424

13.1 GDI編程接口概述 424

13.1.1 Windows GDI的功能 424

13.1.2 程式庫與頭檔案 424

13.2 設備上下文(DC)、輸出操作與圖形對象 425

13.2.1 設備上下文類型與關聯設備 425

13.2.2 圖形對象的作用及與DC的關係 425

13.2.3 各類圖形對象的具體屬性與作用 428

13.2.4 繪製、填充、寫入等圖形輸出操作 429

13.2.5 修剪與坐標變換 430

13.2.6 設備上下文的圖形模式 430

13.3 一個最簡單的GDI程式 431

13.3.1 示例 431

13.3.2 DC的操作 433

13.3.3 顏色的表示 434

13.3.4 圖形對象:畫刷和畫筆 435

13.3.5 輸出操作:繪製圖形和線條 436

13.4 文字和字型 437

13.4.1 選擇、設定字型 439

13.4.2 選擇字型圖形對象 441

13.4.3 文字的顏色 441

13.4.4 輸出文字 441

13.4.5 DC圖形模式設定 442

13.4.6 遍歷已安裝字型 443

13.4.7 為系統安裝、刪除字型檔 446

13.5 繪製線條 446

13.5.1 選擇畫筆對象 446

13.5.2 直線 446

13.5.3 繪製任意曲線 446

13.5.4 跟蹤滑鼠軌跡 447

13.5.5 弧線 453

13.6 繪製圖形 454

13.6.1 填充顏色與邊緣勾勒 454

13.6.2 繪製矩形、橢圓、圓角矩形 454

13.6.3 橢圓弓形和橢圓扇形 460

13.6.4 多邊形 461

13.6.5 RECT結構及對RECT的操作 462

13.7 點陣圖操作 463

13.7.1 截取螢幕、保存點陣圖檔案 464

13.7.2 將點陣圖顯示在界面上 469

13.8 區域(Regions)、路徑(Paths)與修剪(Clip)操作 473

13.8.1 區域的創建及形狀、位置等屬性 473

13.8.2 區域邊沿、區域填充、反轉與勾勒操作 474

13.8.3 組合、比較、移動等操作 477

13.8.4 點擊測試(Hit Testing) 478

13.8.5 路徑的創建與操作 483

13.8.6 路徑轉換為區域 484

13.8.7 使用區域和路徑進行修剪操作,限制輸出 484

13.9 坐標變換 491

13.9.1 縮放 492

13.9.2 旋轉 492

13.10 調色板 493

第14章 網路通信與配置 496

14.1 Socket通信 497

14.1.1 客戶端 497

14.1.2 服務端 503

14.1.3 處理並發的客戶端連線 510

14.1.4 網路通信的異步I/O模式 510

14.2 IP Helper 511

第15章 程式安裝與設定 519

15.1 創建cab檔案 519

15.1.1 makecab.exe 519

15.1.2 壓縮多個檔案 520

15.1.3 Cabinet軟體開發工具包(CABSDK) 522

15.2 編寫INF檔案 522

15.2.1 INF檔案格式 522

15.2.2 Install節 524

15.2.3 CopyFiles和AddReg等安裝過程 525

15.2.4 源路徑和目的路徑 525

15.2.5 字元串表 526

15.3 安裝程式setup.exe的編號 526

15.4 使用msi檔案進行安裝 529

15.4.1 Windows Installer Service 529

15.4.2 msi檔案的創建與修改工具orca.exe 531

15.4.3 準備工作 533

15.4.4 編輯表組 533

第16章 設備驅動管理與核心通信 534

16.1 設備管理 534

16.1.1 列舉設備接口 535

16.1.2 監控設備的載入和卸載 542

16.2 I/O控制、核心通信 548

16.2.1 載入驅動程式 548

16.2.2 控制驅動程式、與驅動程式進行通信 556

16.3 編寫設備驅動程式 559

16.3.1 驅動程式開發包:DDK 559

16.3.2 開發驅動程式 559

16.4 I/O模式,同步與異步 565

第17章 用戶、認證和對象安全 567

17.1 基本概念 567

17.1.1 訪問令牌、許可權和用戶標識 567

17.1.2 進程的系統操作許可權 568

17.1.3 安全對象 569

17.1.4 訪問控制列表(ACL) 569

17.2 安全機製程序示例 570

17.2.1 列舉進程訪問令牌內容和許可權 570

17.2.2 修改進程的許可權 576

17.2.3 列舉安全對象的安全描述符 577

17.2.4 修改安全描述符 583

17.3 用戶 584

17.3.1 創建用戶 584

17.3.2 用戶組 586

17.3.3 刪除用戶 587

17.3.4 列舉用戶和用戶組、獲取用戶信息 588

第18章 Windows API的內部原理 595

18.1 關於API的補充說明 595

18.1.1 Windows API的版本演進和Vista以後版本新增API 595

18.1.2 64位作業系統的接口 596

18.2 Windows系統中的對象封裝 597

18.2.1 什麼是對象 597

18.2.2 面向對象的思想 597

18.2.3 Windows系統中的對象:核心對象、GDI對象等 597

18.3 Windows程式設計參考:文檔資源與樣例代碼 597

18.3.1 SDK文檔和MSDN 597

18.3.2 SDK示例代碼 598

18.4 x86平台程式函式調用原理 598

18.4.1 函式調用的真實過程 598

18.4.2 函式調用約定 604

18.4.3 為什麼通過參數返回數據時只能使用指針 604

18.4.4 緩衝區溢出 604

18.4.5 程式運行錯誤的調試技巧 605

18.5 可執行程式結構與API函式接口內部機理 605

18.5.1 Windows可執行程式結構 605

18.5.2 導入表、導出表、動態連結 608

18.5.3 NTDLL.DLL、NATIVE API和SSDT 609

18.5.4 API HOOK 611

18.6 發布程式 611

18.6.1 合理選擇編譯連結選項 611

18.6.2 構建到指定路徑 611

18.7 模組化,向Windows API學習接口定義 612

18.7.1 lib檔案 612

18.7.2 頭檔案 612

18.7.3 為第三方套用軟體提供SDK 612

相關詞條

相關搜尋

熱門詞條

聯絡我們