Windows API開發詳解——函式、接口、編程實例

Windows API開發詳解——函式、接口、編程實例

《WindowsAPI開發詳解——函式、接口、編程實例》是2011年出版的圖書,作者是範文慶周彬彬安靖。

基本介紹

  • 書名:Windows API開發詳解——函式、接口、編程實例
  • 作者: 範文慶 周彬彬 安靖 
  • 頁數: 612頁
  • 出版時間: 2011-3
基本信息,內容提要,目錄,

基本信息

【作者】 範文慶 周彬彬 安靖 【編輯】 蔣佳
【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

相關詞條

熱門詞條

聯絡我們