第一部分 概 述
第1章 套書概述 1
1.1 套書的組織結構 2
1.2 套書的設計思想 2
第2章 本書內容 4
第3章 使用微軟參考資源 6
3.1 微軟開發(fā)人員網絡 6
3.1.1 MSDN與在線MSDN的比較 7
3.1.2 MSDN訂閱 9
3.1.3 使用MSDN 10
3.1.4 使用在線MSDN 15
3.2 Windows編程參考系列 24
第4章 查找你需要的開發(fā)人員資源 25
4.1 開發(fā)人員支持 25
4.2 聯(lián)機資源 27
4.3 Internet標準 27
4.4 學習產品 28
4.5 會議 29
4.6 其他資源 30
第5章 避免常見的RPC編程錯誤 31
5.1 解決方法概述 31
5.2 常見的RPC編程錯誤 31
5.2.1 Pointer_default(unigue)和嵌套指針 32
5.2.2 在一個支持RPC 的結構里,有效的SWitch
_is值并不保證指針是非NULL的 32
5.2.3 NULL DACL 不提供任何保護 33
5.2.4 在進行任何與安全有關的操作前調用Rpclmpersonate Client( ) 33
5.2.5 開始和結束假冒 34
5.2.6 只有在.idl文件中使用string 說明的字符
串才是以零結尾的 35
5.2.7 不能將任意長度的數(shù)據拷貝到固定
長度的緩沖區(qū)中 35
5.2.8 size_is可能導致一個長度為0的結構 36
5.2.9 size_is或Length_is說明中的算術表達式
很容易溢出 37
5.2.10 嚴格的上下文句柄 37
第二部分 RPC與WNet 編程參考
第6章 微軟RPC模型 39
6.1 編程模型 39
6.2 客戶機-服務器模型 41
6.3 計算-服務器模型 42
6.4 RPC是如何工作的 42
6.5 RPC的OSF標準 43
6.6 微軟RPC組成部分 44
6.7 RPC擴展了客戶機-服務器計算模型 45
第7章 安裝RPC編程環(huán)境 46
7.1 開發(fā)32位Windows應用程序 46
7.2 開發(fā)Macintosh客戶應用程序 47
第8章 創(chuàng)建RPC應用程序 49
8.1 一般的創(chuàng)建過程 49
8.1.1 開發(fā)接口 49
8.1.2 開發(fā)服務器程序 53
8.1.3 開發(fā)客戶機程序 54
8.2 環(huán)境、編譯器和API集合的選擇 55
8.3 異常處理 55
第9章 連接客戶機與服務器 57
9.1 基本的RPC綁定術語 57
9.2 服務器如何準備連接 57
9.2.1 注冊接口 58
9.2.2 創(chuàng)建綁定信息 59
9.2.3 登記服務程序 59
9.2.4 注冊端點 60
9.2.5 偵聽客戶機調用 60
9.3 客戶機如何建立連接 61
9.3.1 發(fā)出遠程過程調用 61
9.3.2 尋找服務器宿主計算機 61
9.3.3 尋找服務程序 63
9.3.4 創(chuàng)建一個綁定 63
第10章 簡單教程 64
10.1 單機版的應用程序 64
10.2 定義接口 64
10.3 生成UUID 65
10.4 IDL文件 65
10.5 ACF文件 66
10.6 生成碼樁文件 66
10.7 客戶應用程序 68
10.8 服務應用程序 70
10.9 終止服務應用程序 71
10.10 編譯和鏈接 72
10.11 運行應用程序 73
第11章 IDL和ACF文件 75
11.1 接口定義語言文件 75
11.1.1 IDL接口頭 76
11.1.2 IDL接口主干 76
11.2 應用程序配置文件 77
11.2.1 ACF頭 77
11.2.2 ACF主干 77
11.3 MIDL編譯器的輸出 78
第12章 數(shù)據和語言特點 79
12.1 強類型 79
12.1.1 基本數(shù)據類型 80
12.1.2 有符號和無符號類型 80
12.1.3 寬字符類型 80
12.1.4 結構 81
12.1.5 聯(lián)合 81
12.1.6 枚舉類型 82
12.1.7 數(shù)組 82
12.1.8 函數(shù)屬性 82
12.1.9 域屬性 82
12.1.10 三種指針類型 83
12.1.11 類型屬性 84
12.2 方向屬性 84
12.3 數(shù)據的表示 86
12.3.1 transmit_as和represent_as屬性 87
12.3.2 wire_marshal和user_marshal屬性 94
第13章 數(shù)組與指針 100
13.1 數(shù)組和RPC 100
13.1.1 數(shù)組的種類 100
13.1.2 數(shù)組屬性 103
13.1.3 多維數(shù)組 106
13.2 指針和RPC 108
13.2.1 指針類型 108
13.2.2 指針和內存分配 111
13.2.3 缺省指針類型 112
13.2.4 指針屬性類型的繼承 112
13.3 數(shù)組、字符串和指針的使用 113
13.3.1 計數(shù)字符數(shù)組 114
13.3.2 字符串 116
13.3.3 多層指針 117
第14章 管道 119
14.1 基本的管道術語 119
14.2 管道的狀態(tài) 119
14.3 在IDL文件中定義管道 119
14.4 客戶端管道的實現(xiàn) 120
14.4.1 實現(xiàn)客戶端的輸入管道 121
14.4.2 實現(xiàn)客戶端的輸出管道 123
14.5 服務器端管道的實現(xiàn) 125
14.5.1 實現(xiàn)服務器端的輸入管道 125
14.5.2 實現(xiàn)服務器端的輸出管道 126
14.6 多管道的規(guī)則 127
14.7 管道與非管道參數(shù)的組合 128
第15章 綁定與句柄 129
15.1 綁定句柄 129
15.1.1 綁定句柄的類型 129
15.1.2 客戶端綁定 134
15.1.3 服務器端綁定 140
15.1.4 完全和部分綁定句柄 150
15.1.5 解釋綁定信息 150
15.1.6 微軟RPC對綁定句柄的擴展 151
15.1.7 綁定句柄函數(shù) 153
15.1.8 RPC名字服務數(shù)據庫 153
15.2 上下文句柄 158
15.2.1 使用上下文句柄開發(fā)接口 158
15.2.2 使用上下文句柄開發(fā)服務器 159
15.2.3 使用上下文句柄開發(fā)客戶機 161
15.2.4 服務器上下文關閉例程 162
15.2.5 客戶機上下文的重置 163
15.2.6 多線程客戶機和上下文句柄 163
第16章 內存管理 164
16.1 RPC內存管理簡介 164
16.2 內存是如何分配和回收的 164
16.2.1 midl_user_allocate函數(shù) 165
16.2.2 midl_user_free函數(shù) 166
16.2.3 RpcSs內存管理包 166
16.3 內存管理模式 167
16.3.1 單個節(jié)點的分配和回收 167
16.3.2 碼樁分配的緩沖區(qū) 167
16.3.3 應用程序分配的緩沖區(qū) 168
16.3.4 服務器上的永久性存儲區(qū) 169
16.4 誰來管理內存 169
16.4.1 頂層和嵌入指針 169
16.4.2 參數(shù)的方向屬性 170
16.4.3 長度、大小和方向屬性 170
16.4.4 參數(shù)的指針屬性 171
16.4.5 指針與方向屬性的組合 171
16.4.6 函數(shù)返回值 172
16.5 內存泄漏 173
16.6 內存分配規(guī)則總結 173
第17章 串行化服務 175
17.1 使用串行化服務 175
17.2 過程串行化 176
17.3 類型串行化 177
17.4 串行化句柄 178
17.4.1 隱式與顯式句柄 178
17.4.2 串行化樣式 178
17.4.3 獲取編碼標識符 183
第18章 安全 184
18.1 RPC安全的基本要點 184
18.1.1 主體名 184
18.1.2 認證級別 185
18.1.3 認證服務 185
18.1.4 客戶機認證證書 185
18.1.5 授權服務 185
18.1.6 服務質量 186
18.1.7 授權函數(shù) 186
18.1.8 密鑰獲取函數(shù) 186
18.1.9 客戶機假冒 187
18.2 安全方式 187
18.2.1 安全支持提供者接口 188
18.2.2 Windows NT和Windows 2000的
傳輸層安全 192
第19章 安裝和配置RPC應用程序 195
19.1 配置名字服務提供者 195
19.1.1 為Windows 95配置名字服務 195
19.1.2 為Windows NT或Windows 2000
配置名字服務 196
19.1.3 為Windows 3.x或MS-DOS配置名字
服務 197
19.1.4 啟動和終止微軟定位器 197
19.2 注冊表信息 198
19.2.1 使用RPC注冊表條目 198
19.2.2 為端口分配和選擇性綁定配置Windows
NT和Windows 2000注冊表 199
19.3 利用Winsock代理使用RPC 200
19.4 SPX/IPX上的安裝 201
19.4.1 為SPX/IPX配置RPC 201
19.4.2 配置SAP和RPC 202
19.5 配置安全服務器 203
第20章 異步RPC 205
20.1 聲明異步函數(shù) 205
20.2 客戶端的異步RPC 206
20.2.1 發(fā)出異步調用 206
20.2.2 等待異步答復 208
20.2.3 接收異步答復 209
20.3 服務器端的異步RPC 210
20.3.1 處理異步調用 210
20.3.2 接收取消請求 210
20.3.3 發(fā)送異步答復 210
20.3.4 異步I/O和異步RPC 212
20.4 異步調用的因果順序 212
20.5 錯誤處理 213
20.6 在有名管道協(xié)議上的異步RPC 213
20.7 使用DCE管道的異步RPC 214
20.7.1 異步管道 214
20.7.2 聲明異步管道 214
20.7.3 客戶端的異步管道處理 215
20.7.4 服務器端的異步管道處理 216
20.8 異步DCOM 219
第21章 RPC消息隊列 220
21.1 消息隊列服務體系結構概述 220
21.2 消息和消息隊列的特征 221
21.3 使用MSMQ作為RPC的傳輸層 221
21.4 RPC-MQ應用程序的系統(tǒng)需求 222
21.5 開發(fā)RPC-MQ應用程序 222
21.6 MSMQ安全服務 224
第22章 使用HTTP的遠程過程調用 225
22.1 使用HTTP作為一個RPC傳輸層 225
22.2 HTTP RPC的安全機制 227
22.3 HTTP RPC的系統(tǒng)需求 228
22.4 為HTTP RPC配置計算機 228
第23章 RPC程序示例 229
第24章 RPC數(shù)據類型、結構和常量 231
24.1 RPC結構 231
24.2 RPC枚舉類型 245
24.3 其他RPC類型 246
24.4 RPC常量 255
24.5 RPC返回值 260
第25章 RPC函數(shù)參考 264
第26章 RPC回調與通知函數(shù) 434
第27章 RPC宏 439
第28章 Windows連網 445
28.1 關于Windows連網 445
28.1.1 WNet函數(shù) 446
28.1.2 Windows連網操作 447
28.2 Windows連網的使用 447
28.2.1 使用連接對話框 447
28.2.2 枚舉網絡資源 448
28.2.3 添加網絡連接 451
28.2.4 為共享資源分配驅動器號 452
28.2.5 確定共享資源的位置 453
28.2.6 檢索連接名 455
28.2.7 檢索用戶名 456
28.2.8 取消網絡連接 457
28.2.9 檢索網絡錯誤 457
28.3 Windows連網參考 459
28.3.1 Windows連網的函數(shù) 459
28.3.2 過時的函數(shù) 460
28.3.3 Windows連網的結構 491
第三部分 附 錄
網絡連接服務編程元素索引 501
RPC術語表 522