Windows系統編程(2010年機械工業出版社出版的圖書)

Windows系統編程(2010年機械工業出版社出版的圖書)

本詞條是多義詞,共2個義項
更多義項 ▼ 收起列表 ▲

《Windows系統編程》是2010年機械工業出版社出版的圖書,作者是Johnson M. Hart,譯者是戴鋒、陳征。

基本介紹

  • 中文名:Windows系統編程
  • 作者:(美國)哈特(Johnson M.Hart)
  • 原作品:Windows System Programming, Fourth Edition
  • 譯者:戴鋒、陳征
  • 出版社機械工業出版社
  • 出版時間:2010年11月
  • 頁數:400 頁
  • 定價:65.00 元
  • 開本:16 開
  • 裝幀平裝
  • ISBN:9787111316688 
圖書簡介,內容簡介,作者簡介,圖書目錄,第1章,第2章,第3章,第4章,第5章,第6章,第7章,第8章,第9章,第10章,第11章,第12章,第13章,第14章,第15章,附錄,參考文獻,

圖書簡介

內容簡介

《Windows系統編程(原書第4版)》是介紹使用microsoft windows應用程式編程接口進行應用程式開發的專著,專注於檔案系統殃犁剃、進程和執行緒管理、進程間通信、網路編程以及同步等核心繫統服務。《Windows系統編程(原書第4版)》的示例都來自現實場景,其中有許多是基於作者在實踐中所開發的真實應用程式。《Windows系統編程(原書第4版)》的目的在於展示如企妹煉何高效地在現實中使用windows api特性來開發高質量、高性能的應用程式。
《Windows系統編程(原書第4版)》適合以下讀者閱讀:任何有c或c++編程知識且想快速學習windows應用程式開發的開發人員、計算機科學專業學習系統編程或應用程式開發課程的高年級學生以及unix/linux程式設計師。

作者簡介

Johnson M. Hart是一位Microsoft Windows和.NET應用程式開發、開放系統計算、技術培訓和寫作以及軟體工程領域的顧問。作為軟體工程師、經理、工程主管和Cilk Arts公司、Sierra Atlantic、Hewlett-Packard和Apollo Computer的高級技術顧問,他已有超過25年的經驗。他曾在肯塔基大學請微充擔任9年的計算機科學教授,並且是本書四個版本的作者。

圖書目錄

第1章

Windows初步1
1.1作業系統必備功能1
1.2Windows的演化2
1.3Windows版本2
1.3.1過時的Windows先前版本2
1.3.2Windows NT5和NT63
1.3.3處理器支持3
1.4Windows的市場角色3
1.5Windows、標準以及開放系統4
1.6Windows準則5
1.732位和64位原始碼可移植性6
1.8標準C庫:何時用它來處理檔案7
1.9使用本書所需的條件7
1.9.1為什麼使用C而不是C++7
1.9.2使用示例7
1.10示例:一個簡單的譽備甩主順序檔案複製程式8
1.10.1使用C庫的文擔樂件複製9
1.10.2使用Windows的檔案複製11
1.10.3使用Windows便利函式的
檔案複製12
1.11小結13
1.11.1前瞻14
1.11.2附加閱讀14
1.12習題15

第2章

使用Windows檔案系統和
字元I/O16
2.1Windows檔案系統16
2.2檔案命名17
2.3檔案的打開、讀取、寫入以及關閉17
2.3.1檔案的創建和打開17
2.3.2關閉檔案19
2.3.3讀檔案20
2.3.4寫檔案21
2.4Unicode和通用字元21
2.4.1另一種通用字元串處理函式22
2.4.2通用Main函式23
2.4.3函式定義23
2.5Unicode策略23
2.6示例:錯誤處理23
2.7標準設備25
2.8示例:將多個檔案複製到標準輸出26
2.9示例:簡單的檔案加密27
2.10檔案和目錄管理29
2.10.1檔案管理29
2.10.2目錄管理31
2.11控制台I/O32
2.12示例:列印和提示33
2.13示例:列印當前目錄35
2.14小結36
2.14.1前瞻36
2.14.2附加閱讀36
2.15習題36

第3章

高級檔案、目錄處理與註冊表38
3.164位檔案系統38
3.2檔案指針38
3.2.164位算術39
3.2.2使用重疊結構來指定檔案位置40
3.3獲得檔案尺寸41
3.4示例:隨機記錄更新41
3.5檔案屬性和目錄處理45
3.5.1路徑名46
3.5.2其他用於獲得檔案和目錄屬性的方法46
3.5.3臨時檔案名稱47
3.6示例:列出檔案屬性47
3.7示例:設定檔案時間50
3.8檔案處理策略51
3.9檔案鎖52
3.9.1釋放檔案鎖54
3.9.2鎖邏輯的後果54
3.10註冊表55
3.11註冊表管理56
3.11.1項管理57
3.11.2值和數據管理58
3.12示例:列出註冊表項及其內容59
3.13小結62
3.13.1前瞻62
3.13.2附加閱讀62
3.14習題62

第4章

異常處理64
4.1異常及其處頌熱白理程式64
4.1.1Try和Except塊64
4.1.2過濾表達式及其值66
4.1.3異常代碼67
4.1.4小結:異常處理順序68
4.2浮點異常69
4.3錯誤和異常70
4.4示例:以異常方式處理錯誤71
4.5終止處理程式72
4.5.1離開try塊72
4.5.2非正常終止73
4.5.3執行並盼諒放嘗離開終止處理程式73
4.5.4組合finally和except塊73
4.5.5全局和局部解開74
4.5.6終止處理程式:進程和執行緒
終止74
4.5.7SEH和C++異常處理74
4.6示例:使用終止處理程式來改進程式質量74
4.7示例:使用過濾函式77
4.8控制台控制處理程式79
4.9示例:一個控制台控制處理程式80
4.10向量化異常處理82
4.11小結82
4.12習題83

第5章

記憶體管理、記憶體映射檔案和DLL84
5.1Windows記憶體管理架構84
5.2堆86
5.3管理堆記憶體88
5.3.1HeapAlloc88
5.3.2HeapFree89
5.3.3HeapReAlloc89
5.3.4HeapSize89
5.3.5更多關於序列化與異常標誌的信息90
5.3.6其他堆函式90
5.3.7小結:堆管理91
5.4示例:使用二叉搜尋樹對檔案進行排序91
5.5記憶體映射檔案95
5.5.1檔案映射對象96
5.5.2將對象映射到進程地址空間97
5.5.3檔案映射的限制99
5.5.4小結:檔案映射100
5.6示例:使用映射檔案進行順序檔案處理100
5.7示例:對記憶體映射檔案排序102
5.8基指針104
5.9示例:使用基指針104
5.10動態程式庫108
5.10.1靜態庫和動態庫108
5.10.2隱式連結109
5.10.3顯式連結111
5.11示例:顯式連結檔案轉換函式112
5.12DLL進入點113
5.13DLL版本管理114
5.14小結115
5.14.1前瞻115
5.14.2附加閱讀115
5.15習題115

第6章

進程管理117
6.1Windows進程和執行緒117
6.2進程創建118
6.2.1指定可執行映像和命令行120
6.2.2可繼承句柄121
6.3進程標識122
6.4複製句柄123
6.5進程的退出與終止124
6.6等待進程終止125
6.7環境塊和字元串125
6.8示例:並行模式搜尋126
6.9多處理器環境中的進程129
6.10進程執行時間130
6.11示例:進程執行時間130
6.12生成控制台控制事件131
6.13示例:簡單的作業管理132
6.13.1創建一個後台作業132
6.13.2獲取作業號135
6.13.3列出背景作業136
6.13.4在作業清單檔案中查找作業137
6.13.5作業對象138
6.14示例:使用作業對象139
6.15小結142
6.16習題142

第7章

執行緒和調度144
7.1執行緒概述144
7.2執行緒基礎145
7.3執行緒管理146
7.3.1CreateThread146
7.3.2ExitThread147
7.3.3GetExitCodeThread147
7.3.4執行緒標識147
7.3.5更多執行緒管理函式147
7.3.6掛起以及恢複線程148
7.3.7等待執行緒終止148
7.4線上程中使用C庫148
7.5示例:多執行緒的模式搜尋149
7.6性能影響152
7.7老闆/工人和其他執行緒模型152
7.8示例:合併排序——利用多處理器152
7.9程式並行性簡介157
7.10執行緒本地存儲158
7.11進程和執行緒優先權以及調度159
7.12執行緒狀態160
7.13陷阱和常見錯誤162
7.14計時等待163
7.15纖程163
7.16小結165
7.16.1前瞻165
7.16.2附加閱讀165
7.17習題165

第8章

執行緒同步167
8.1執行緒同步之需167
8.1.1臨界代碼區域168
8.1.2臨界代碼區域問題的有瑕疵的解決方案168
8.1.3volatile存儲169
8.1.4記憶體架構和記憶體屏障169
8.1.5互鎖函式:介紹171
8.1.6局部和全局存儲171
8.1.7小結:執行緒安全的代碼172
8.2執行緒同步對象173
8.3CRITICAL_SECTION對象173
8.4用於保護共享變數的CRITICAL_SECTION174
8.5示例:一個簡單的生產者/消費者系統176
8.6互斥量180
8.6.1被放棄的互斥量181
8.6.2互斥量、CRITICAL_SECTION以及死鎖181
8.6.3複習:互斥量與CRITICAL_SECTION對比183
8.6.4堆鎖183
8.7信號量183
8.7.1使用信號量184
8.7.2信號量的限制184
8.8事件185
8.9示例:一個生產者/消費者系統187
8.9.1複習:Windows同步對象189
8.9.2訊息和對象等待190
8.10更多互斥量和CRITICAL_SECTION的指導原則190
8.11更多互鎖函式191
8.12記憶體管理性能的考慮192
8.13小結192
8.13.1前瞻192
8.13.2附加閱讀192
8.14 習題192

第9章

鎖、性能以及NT6增強194
9.1 同步性能影響194
9.2 用於性能試驗的模型程式197
9.3 使用CS自旋數來調整多處理器性能198
9.4 NT6輕量級讀/寫鎖199
9.5 減少執行緒競爭的執行緒池200
9.6 I/O完成連線埠202
9.7 NT6執行緒池203
9.7.1 CreateThreadpoolWork 203
9.7.2 SubmitThreadpoolWork 204
9.7.3 WaitForThreadpoolWork-Callbacks 204
9.7.4 CloseThreadpoolWork 204
9.7.5 回調函式204
9.7.6 將回調提交給執行緒池207
9.7.7 執行緒池環境207
9.7.8 進程執行緒池207
9.7.9 其他執行緒池回調類型208
9.8 小結:鎖性能208
9.9 再論並行性208
9.9.1 更好的基礎以及擴展中的並行程式技術209
9.9.2 並行編程的可選方法209
9.9.3 並行性框架209
9.9.4 不要忘了挑戰的存在210
9.10 處理器親和性210
9.10.1 系統、進程與執行緒親和性掩碼211
9.10.2 查找處理器數量212
9.11 性能指導原則和陷阱212
9.12 小結213
9.12.1 前瞻213
9.12.2 附加閱讀213
9.13 習題213

第10章

高級執行緒同步215
10.1 條件變數模型和安全性能215
10.1.1 一起使用事件和互斥量215
10.1.2 條件變數模型216
10.1.3 條件變數模型的使用218
10.2 使用SignalObjectAndWait219
10.3 示例:閥值屏障對象220
10.4 佇列對象223
10.5 示例:在多階段管線中使用佇列226
10.6 Windows NT6條件變數233
10.7 異步過程調用236
10.8 異步過程調用的排隊236
10.9 可報警的等待狀態237
10.10 安全的執行緒取消239
10.11 為了應用程式的可移植而使用Pthreads239
10.12 執行緒堆疊和執行緒數239
10.13 關於設計、調試和測試的提示240
10.14 Windows API之外241
10.15 小結241
10.15.1 前瞻242
10.15.2 附加閱讀242
10.16 習題242

第11章

進程間通信244
11.1 匿名管道244
11.2 示例:使用匿名管道進行I/O重定向245
11.3 命名管道247
11.3.1 使用命名管道248
11.3.2 創建命名管道248
11.3.3 命名管道客戶連線249
11.3.4 命名管道狀態函式250
11.3.5 命名管道連線函式250
11.3.6 客戶和伺服器的命名管道連線250
11.4 命名管道事務函式251
11.5 示例:客戶/伺服器命令行處理程式253
11.6 關於客戶/伺服器命令行處理程式的注釋258
11.7 郵槽259
11.7.1 使用郵槽260
11.7.2 創建和打開郵槽260
11.8 管道和郵槽的創建、連線和命名261
11.9 示例:客戶可定位的伺服器262
11.10 小結264
11.11 習題264

第12章

使用Windows套接字進行網路編程265
12.1 Windows套接字265
12.1.1 Winsock初始化266
12.1.2 創建套接字266
12.2 套接字伺服器函式267
12.2.1 綁定套接字267
12.2.2 將綁定的套接字置於偵聽狀態268
12.2.3 接受客戶連線268
12.2.4 斷開以及關閉套接字268
12.2.5 示例:準備並接受客戶連線269
12.3 套接字客戶函式270
12.3.1 連線伺服器270
12.3.2 示例:客戶連線伺服器270
12.3.3 傳送和接收數據270
12.4 命名管道和套接字之對比271
12.4.1 命名管道與套接字伺服器之比較271
12.4.2 命名管道與套接字客戶之比較271
12.5 示例:套接字訊息接收函式271
12.6 示例:基於套接字的客戶272
12.7 示例:基於套接字的、帶有新特性的伺服器274
12.7.1 主程式275
12.7.2 伺服器執行緒278
12.7.3 運行套接字伺服器279
12.7.4 安全注釋280
12.8 進程內伺服器280
12.9 面向行的訊息、DLL進入點以及TLS282
12.10 示例:執行緒安全的套接字訊息DLL283
12.11 示例:另一種執行緒安全的DLL策略286
12.12 數據報289
12.12.1 數據報廣播289
12.12.2 使用數據報進行遠程過程調用289
12.13 Berkeley套接字和Windows套接字的比較290
12.14 Windows套接字使用重疊I/O290
12.15 Windows套接字的額外特性290
12.16 小結290
12.16.1 前瞻290
12.16.2 附加閱讀291
12.17 習題291

第13章

Windows服務293
13.1 概述:編寫Windows服務293
13.2 main函式294
13.3 ServiceMain函式294
13.3.1 註冊服務控制處理程式295
13.3.2 設定服務狀態295
13.3.3 SERVICE_STATUS結構296
13.3.4 服務特定的代碼297
13.4 服務控制處理程式297
13.5 事件記錄298
13.6 示例:服務“包裝器”298
13.7 管理Windows服務302
13.7.1 打開SCM303
13.7.2 創建和刪除服務303
13.7.3 啟動服務304
13.7.4 控制服務304
13.7.5 查詢服務狀態305
13.7.6 小結:服務操作和管理305
13.8 示例:服務控制Shell305
13.9 與服務共享核心對象309
13.10 調試服務時的注意事項309
13.11 小結310
13.11.1 前瞻310
13.11.2 附加閱讀310
13.12 習題310

第14章

異步輸入/輸出與完成連線埠311
14.1 Windows異步I/O概述311
14.2 重疊I/O312
14.2.1 重疊I/O的後果312
14.2.2 重疊結構313
14.2.3 重疊I/O狀態313
14.2.4 取消重疊I/O操作314
14.3 示例:在一個檔案句柄之上同步314
14.4 示例:使用重疊I/O和多緩衝區進行檔案轉換315
14.5 使用完成例程的擴展I/O318
14.5.1 ReadFileEx、WriteFileEx和完成例程318
14.5.2 可報警的等待函式319
14.5.3 完成例程的執行和可報警等待的返回320
14.6 示例:使用擴展I/O的檔案轉換321
14.7 使用執行緒的異步I/O324
14.8 可等待定時器324
14.9 示例:使用可等待定時器325
14.9.1 可等待定時器示例的注釋327
14.9.2 執行緒池定時器327
14.10 I/O完成連線埠327
14.10.1 管理I/O完成連線埠328
14.10.2 等待I/O完成連線埠328
14.10.3 郵發給I/O完成連線埠329
14.10.4 I/O完成連線埠的替代329
14.11 示例:使用I/O完成連線埠的伺服器329
14.12 小結335
14.13 習題335

第15章

Windows對象的安全337
15.1 安全屬性337
15.2 安全性概述:安全描述符338
15.2.1 訪問控制列表338
15.2.2 使用Windows對象安全性339
15.2.3 對象許可權和對象訪問339
15.2.4 安全描述符初始化339
15.3 安全描述符控制標誌339
15.5 管理ACL341
15.6 示例:NTFS檔案的UNIX風格的許可權342
15.7 示例:初始化安全屬性345
15.8 安全描述符的讀與更改347
15.9 示例:讀取檔案許可權349
15.10 示例:更改檔案許可權350
15.11 給核心和通信對象施加安全350
15.11.1 給命名管道施加安全350
15.11.2 核心與私有對象的安全性351
15.11.3 ACE掩碼值351
15.12 示例:給進程及其執行緒施加安全352
15.13 其他安全特性的概述352
15.13.1 移除ACE352
15.13.2 絕對的和自相關的安全描述符352
15.13.3 系統ACL352
15.13.4 訪問令牌信息353
15.13.5 SID管理353
15.14 小結353
15.14.1 前瞻353
15.14.2 附加閱讀353
15.15 習題353

附錄

附錄A 使用示例程式355
附錄B 原始碼可移植性:Windows、UNIX和Linux357
附錄C 性能結果370

參考文獻

379
2.2檔案命名17
2.3檔案的打開、讀取、寫入以及關閉17
2.3.1檔案的創建和打開17
2.3.2關閉檔案19
2.3.3讀檔案20
2.3.4寫檔案21
2.4Unicode和通用字元21
2.4.1另一種通用字元串處理函式22
2.4.2通用Main函式23
2.4.3函式定義23
2.5Unicode策略23
2.6示例:錯誤處理23
2.7標準設備25
2.8示例:將多個檔案複製到標準輸出26
2.9示例:簡單的檔案加密27
2.10檔案和目錄管理29
2.10.1檔案管理29
2.10.2目錄管理31
2.11控制台I/O32
2.12示例:列印和提示33
2.13示例:列印當前目錄35
2.14小結36
2.14.1前瞻36
2.14.2附加閱讀36
2.15習題36

第3章

高級檔案、目錄處理與註冊表38
3.164位檔案系統38
3.2檔案指針38
3.2.164位算術39
3.2.2使用重疊結構來指定檔案位置40
3.3獲得檔案尺寸41
3.4示例:隨機記錄更新41
3.5檔案屬性和目錄處理45
3.5.1路徑名46
3.5.2其他用於獲得檔案和目錄屬性的方法46
3.5.3臨時檔案名稱47
3.6示例:列出檔案屬性47
3.7示例:設定檔案時間50
3.8檔案處理策略51
3.9檔案鎖52
3.9.1釋放檔案鎖54
3.9.2鎖邏輯的後果54
3.10註冊表55
3.11註冊表管理56
3.11.1項管理57
3.11.2值和數據管理58
3.12示例:列出註冊表項及其內容59
3.13小結62
3.13.1前瞻62
3.13.2附加閱讀62
3.14習題62

第4章

異常處理64
4.1異常及其處理程式64
4.1.1Try和Except塊64
4.1.2過濾表達式及其值66
4.1.3異常代碼67
4.1.4小結:異常處理順序68
4.2浮點異常69
4.3錯誤和異常70
4.4示例:以異常方式處理錯誤71
4.5終止處理程式72
4.5.1離開try塊72
4.5.2非正常終止73
4.5.3執行並離開終止處理程式73
4.5.4組合finally和except塊73
4.5.5全局和局部解開74
4.5.6終止處理程式:進程和執行緒
終止74
4.5.7SEH和C++異常處理74
4.6示例:使用終止處理程式來改進程式質量74
4.7示例:使用過濾函式77
4.8控制台控制處理程式79
4.9示例:一個控制台控制處理程式80
4.10向量化異常處理82
4.11小結82
4.12習題83

第5章

記憶體管理、記憶體映射檔案和DLL84
5.1Windows記憶體管理架構84
5.2堆86
5.3管理堆記憶體88
5.3.1HeapAlloc88
5.3.2HeapFree89
5.3.3HeapReAlloc89
5.3.4HeapSize89
5.3.5更多關於序列化與異常標誌的信息90
5.3.6其他堆函式90
5.3.7小結:堆管理91
5.4示例:使用二叉搜尋樹對檔案進行排序91
5.5記憶體映射檔案95
5.5.1檔案映射對象96
5.5.2將對象映射到進程地址空間97
5.5.3檔案映射的限制99
5.5.4小結:檔案映射100
5.6示例:使用映射檔案進行順序檔案處理100
5.7示例:對記憶體映射檔案排序102
5.8基指針104
5.9示例:使用基指針104
5.10動態程式庫108
5.10.1靜態庫和動態庫108
5.10.2隱式連結109
5.10.3顯式連結111
5.11示例:顯式連結檔案轉換函式112
5.12DLL進入點113
5.13DLL版本管理114
5.14小結115
5.14.1前瞻115
5.14.2附加閱讀115
5.15習題115

第6章

進程管理117
6.1Windows進程和執行緒117
6.2進程創建118
6.2.1指定可執行映像和命令行120
6.2.2可繼承句柄121
6.3進程標識122
6.4複製句柄123
6.5進程的退出與終止124
6.6等待進程終止125
6.7環境塊和字元串125
6.8示例:並行模式搜尋126
6.9多處理器環境中的進程129
6.10進程執行時間130
6.11示例:進程執行時間130
6.12生成控制台控制事件131
6.13示例:簡單的作業管理132
6.13.1創建一個後台作業132
6.13.2獲取作業號135
6.13.3列出背景作業136
6.13.4在作業清單檔案中查找作業137
6.13.5作業對象138
6.14示例:使用作業對象139
6.15小結142
6.16習題142

第7章

執行緒和調度144
7.1執行緒概述144
7.2執行緒基礎145
7.3執行緒管理146
7.3.1CreateThread146
7.3.2ExitThread147
7.3.3GetExitCodeThread147
7.3.4執行緒標識147
7.3.5更多執行緒管理函式147
7.3.6掛起以及恢複線程148
7.3.7等待執行緒終止148
7.4線上程中使用C庫148
7.5示例:多執行緒的模式搜尋149
7.6性能影響152
7.7老闆/工人和其他執行緒模型152
7.8示例:合併排序——利用多處理器152
7.9程式並行性簡介157
7.10執行緒本地存儲158
7.11進程和執行緒優先權以及調度159
7.12執行緒狀態160
7.13陷阱和常見錯誤162
7.14計時等待163
7.15纖程163
7.16小結165
7.16.1前瞻165
7.16.2附加閱讀165
7.17習題165

第8章

執行緒同步167
8.1執行緒同步之需167
8.1.1臨界代碼區域168
8.1.2臨界代碼區域問題的有瑕疵的解決方案168
8.1.3volatile存儲169
8.1.4記憶體架構和記憶體屏障169
8.1.5互鎖函式:介紹171
8.1.6局部和全局存儲171
8.1.7小結:執行緒安全的代碼172
8.2執行緒同步對象173
8.3CRITICAL_SECTION對象173
8.4用於保護共享變數的CRITICAL_SECTION174
8.5示例:一個簡單的生產者/消費者系統176
8.6互斥量180
8.6.1被放棄的互斥量181
8.6.2互斥量、CRITICAL_SECTION以及死鎖181
8.6.3複習:互斥量與CRITICAL_SECTION對比183
8.6.4堆鎖183
8.7信號量183
8.7.1使用信號量184
8.7.2信號量的限制184
8.8事件185
8.9示例:一個生產者/消費者系統187
8.9.1複習:Windows同步對象189
8.9.2訊息和對象等待190
8.10更多互斥量和CRITICAL_SECTION的指導原則190
8.11更多互鎖函式191
8.12記憶體管理性能的考慮192
8.13小結192
8.13.1前瞻192
8.13.2附加閱讀192
8.14 習題192

第9章

鎖、性能以及NT6增強194
9.1 同步性能影響194
9.2 用於性能試驗的模型程式197
9.3 使用CS自旋數來調整多處理器性能198
9.4 NT6輕量級讀/寫鎖199
9.5 減少執行緒競爭的執行緒池200
9.6 I/O完成連線埠202
9.7 NT6執行緒池203
9.7.1 CreateThreadpoolWork 203
9.7.2 SubmitThreadpoolWork 204
9.7.3 WaitForThreadpoolWork-Callbacks 204
9.7.4 CloseThreadpoolWork 204
9.7.5 回調函式204
9.7.6 將回調提交給執行緒池207
9.7.7 執行緒池環境207
9.7.8 進程執行緒池207
9.7.9 其他執行緒池回調類型208
9.8 小結:鎖性能208
9.9 再論並行性208
9.9.1 更好的基礎以及擴展中的並行程式技術209
9.9.2 並行編程的可選方法209
9.9.3 並行性框架209
9.9.4 不要忘了挑戰的存在210
9.10 處理器親和性210
9.10.1 系統、進程與執行緒親和性掩碼211
9.10.2 查找處理器數量212
9.11 性能指導原則和陷阱212
9.12 小結213
9.12.1 前瞻213
9.12.2 附加閱讀213
9.13 習題213

第10章

高級執行緒同步215
10.1 條件變數模型和安全性能215
10.1.1 一起使用事件和互斥量215
10.1.2 條件變數模型216
10.1.3 條件變數模型的使用218
10.2 使用SignalObjectAndWait219
10.3 示例:閥值屏障對象220
10.4 佇列對象223
10.5 示例:在多階段管線中使用佇列226
10.6 Windows NT6條件變數233
10.7 異步過程調用236
10.8 異步過程調用的排隊236
10.9 可報警的等待狀態237
10.10 安全的執行緒取消239
10.11 為了應用程式的可移植而使用Pthreads239
10.12 執行緒堆疊和執行緒數239
10.13 關於設計、調試和測試的提示240
10.14 Windows API之外241
10.15 小結241
10.15.1 前瞻242
10.15.2 附加閱讀242
10.16 習題242

第11章

進程間通信244
11.1 匿名管道244
11.2 示例:使用匿名管道進行I/O重定向245
11.3 命名管道247
11.3.1 使用命名管道248
11.3.2 創建命名管道248
11.3.3 命名管道客戶連線249
11.3.4 命名管道狀態函式250
11.3.5 命名管道連線函式250
11.3.6 客戶和伺服器的命名管道連線250
11.4 命名管道事務函式251
11.5 示例:客戶/伺服器命令行處理程式253
11.6 關於客戶/伺服器命令行處理程式的注釋258
11.7 郵槽259
11.7.1 使用郵槽260
11.7.2 創建和打開郵槽260
11.8 管道和郵槽的創建、連線和命名261
11.9 示例:客戶可定位的伺服器262
11.10 小結264
11.11 習題264

第12章

使用Windows套接字進行網路編程265
12.1 Windows套接字265
12.1.1 Winsock初始化266
12.1.2 創建套接字266
12.2 套接字伺服器函式267
12.2.1 綁定套接字267
12.2.2 將綁定的套接字置於偵聽狀態268
12.2.3 接受客戶連線268
12.2.4 斷開以及關閉套接字268
12.2.5 示例:準備並接受客戶連線269
12.3 套接字客戶函式270
12.3.1 連線伺服器270
12.3.2 示例:客戶連線伺服器270
12.3.3 傳送和接收數據270
12.4 命名管道和套接字之對比271
12.4.1 命名管道與套接字伺服器之比較271
12.4.2 命名管道與套接字客戶之比較271
12.5 示例:套接字訊息接收函式271
12.6 示例:基於套接字的客戶272
12.7 示例:基於套接字的、帶有新特性的伺服器274
12.7.1 主程式275
12.7.2 伺服器執行緒278
12.7.3 運行套接字伺服器279
12.7.4 安全注釋280
12.8 進程內伺服器280
12.9 面向行的訊息、DLL進入點以及TLS282
12.10 示例:執行緒安全的套接字訊息DLL283
12.11 示例:另一種執行緒安全的DLL策略286
12.12 數據報289
12.12.1 數據報廣播289
12.12.2 使用數據報進行遠程過程調用289
12.13 Berkeley套接字和Windows套接字的比較290
12.14 Windows套接字使用重疊I/O290
12.15 Windows套接字的額外特性290
12.16 小結290
12.16.1 前瞻290
12.16.2 附加閱讀291
12.17 習題291

第13章

Windows服務293
13.1 概述:編寫Windows服務293
13.2 main函式294
13.3 ServiceMain函式294
13.3.1 註冊服務控制處理程式295
13.3.2 設定服務狀態295
13.3.3 SERVICE_STATUS結構296
13.3.4 服務特定的代碼297
13.4 服務控制處理程式297
13.5 事件記錄298
13.6 示例:服務“包裝器”298
13.7 管理Windows服務302
13.7.1 打開SCM303
13.7.2 創建和刪除服務303
13.7.3 啟動服務304
13.7.4 控制服務304
13.7.5 查詢服務狀態305
13.7.6 小結:服務操作和管理305
13.8 示例:服務控制Shell305
13.9 與服務共享核心對象309
13.10 調試服務時的注意事項309
13.11 小結310
13.11.1 前瞻310
13.11.2 附加閱讀310
13.12 習題310

第14章

異步輸入/輸出與完成連線埠311
14.1 Windows異步I/O概述311
14.2 重疊I/O312
14.2.1 重疊I/O的後果312
14.2.2 重疊結構313
14.2.3 重疊I/O狀態313
14.2.4 取消重疊I/O操作314
14.3 示例:在一個檔案句柄之上同步314
14.4 示例:使用重疊I/O和多緩衝區進行檔案轉換315
14.5 使用完成例程的擴展I/O318
14.5.1 ReadFileEx、WriteFileEx和完成例程318
14.5.2 可報警的等待函式319
14.5.3 完成例程的執行和可報警等待的返回320
14.6 示例:使用擴展I/O的檔案轉換321
14.7 使用執行緒的異步I/O324
14.8 可等待定時器324
14.9 示例:使用可等待定時器325
14.9.1 可等待定時器示例的注釋327
14.9.2 執行緒池定時器327
14.10 I/O完成連線埠327
14.10.1 管理I/O完成連線埠328
14.10.2 等待I/O完成連線埠328
14.10.3 郵發給I/O完成連線埠329
14.10.4 I/O完成連線埠的替代329
14.11 示例:使用I/O完成連線埠的伺服器329
14.12 小結335
14.13 習題335

第15章

Windows對象的安全337
15.1 安全屬性337
15.2 安全性概述:安全描述符338
15.2.1 訪問控制列表338
15.2.2 使用Windows對象安全性339
15.2.3 對象許可權和對象訪問339
15.2.4 安全描述符初始化339
15.3 安全描述符控制標誌339
15.5 管理ACL341
15.6 示例:NTFS檔案的UNIX風格的許可權342
15.7 示例:初始化安全屬性345
15.8 安全描述符的讀與更改347
15.9 示例:讀取檔案許可權349
15.10 示例:更改檔案許可權350
15.11 給核心和通信對象施加安全350
15.11.1 給命名管道施加安全350
15.11.2 核心與私有對象的安全性351
15.11.3 ACE掩碼值351
15.12 示例:給進程及其執行緒施加安全352
15.13 其他安全特性的概述352
15.13.1 移除ACE352
15.13.2 絕對的和自相關的安全描述符352
15.13.3 系統ACL352
15.13.4 訪問令牌信息353
15.13.5 SID管理353
15.14 小結353
15.14.1 前瞻353
15.14.2 附加閱讀353
15.15 習題353

附錄

附錄A 使用示例程式355
附錄B 原始碼可移植性:Windows、UNIX和Linux357
附錄C 性能結果370

參考文獻

379

相關詞條

熱門詞條

聯絡我們