2024香港最具教育競爭力中學/小學/幼稚園50強龍虎榜
2024香港最具教育競爭力中學/小學/幼稚園排名指南
最近十一年香港最具教育競爭力中學/小學/幼稚園50強完整版榜單:
2024202320222021/202019201820172016201520142013
教育競爭力評比體系說明
校風評比體系說明
服务全球华人的中英文書籍網上書店
您的購物車是空的

精通.NET互操作P/Invoke,C++Interop和COM Interop(附DVD光盤1張)

  • 作者:黃際洲,崔曉源 著
  • 出版社: 人民郵電出版社
  • 出版時間:2009-05-01
  • 版次:1
  • 商品編號: 10063438

    頁數:419

    印刷時間:2009-05-01


HK$96.80 (速遞費用須知)
購買額滿HK$158免運費
免郵費優惠僅限香港、澳门、
台灣及中國大陸

購買數量:

內容簡介

 

《精通.NET互操作P/Invoke,C++Interop和COM Interop》介紹Windows平台上的託管代碼與非託管代碼之間進行互操作的各種技術,包括由.NET提供的各種互操作方法、屬性以及各種工具的用法及其工作原理。《精通.NET互操作P/Invoke,C++Interop和COM Interop》包括3部分,平台調用——主要用於解決在託管代碼中調用非託管程序設計語言編寫的flat API(如Win32 API、C/C++風格的API等)的問題;C++ Interop——技術專門用於解決託管代碼與C++編寫的非託管代碼之間的互操作問題;COM Interop——介紹了使用COM Interop解決在託管代碼中調用COM組件,以及在COM中調用託管類型的問題。《精通.NET互操作P/Invoke,C++Interop和COM Interop》適合所有在開發過程中需要涉及到託管代碼與非託管代碼進行交互操作的.NET開發人員閱讀使用。不論是開始學習.NET編程的開發人員,還是剛剛接觸互操作的資深.NET開發人員,都能從《精通.NET互操作P/Invoke,C++Interop和COM Interop》中獲益。

作者簡介

  黃際洲,2004-2007年連續四年微軟最有價值專家(MVP)。感興趣的研究方向主要包括自然語佔處理、信息檢索、聊天機器人等。他曾翻譯了三本遊戲編程方面的書籍:《Direct 3D中的2D編程》、(遊戲編程All in One》及《DirectX角色扮演遊戲編程》。
  崔曉源,就任於微軟亞洲研究院創新工程組,負責前沿研究成果的轉化和新產品孵化。曾參與過Live Search拼寫檢查模塊的研發工作。他最喜歡的項目是在線「電腦對聯」第二版。目前他正致力於下一代企業搜索技術和社會網絡計算相關的研發工作。

媒體評論

  託管代碼與非託管代碼之間的交互是許多程序員在.NET開發平台上不得不面對的任務。《精通.NET互操作:P/Invoke,C++Interop和COM Interop》這本書深入而透徹地解析了.NET支持的三種與原生代碼互操作的技術,作者以自己的經驗講述了原生代碼與託管代碼之間互操作所涉及到的編程要點,以及背後的一些實現原理。書中提供的實例有助於程序員快速領會並掌握.NET與原生代碼互操作技術的用法。我建議在.NFT平台上工作的程序員讀一讀這本書。
    ——潘愛民,著名技術作家,著有《COM原理與應用》等多部暢銷書,並翻譯了多部經典名作

目錄

第一部分 P/Invoke
第1章 使用C/C++類型的非託管函數 1
1.1 平台調用簡介 2
1.2 Hello World!示例程序 3
1.3 獲得要調用的非託管函數聲明 5
1.4 平台調用基礎知識 8
1.5 指定調用約定 11
1.6 指定入口點 13
1.7 指定字符集 16
1.8 處理平台調用中的異常或錯誤 23
1.8.1 非託管函數的託管定義導致的異常或錯誤 24
1.8.2 非託管函數導致的異常或錯誤 30
1.9 釋放非託管內存 37
1.9.1 釋放由malloc方法分配的非託管內存 38
1.9.2 釋放由new運算符分配的非託管內存 44
1.10 動態平台調用 47
1.10.1 平台調用的原理和過程 47
1.10.2 通過手動加載非託管DLL實現動態平台調用 49
1.10.3 利用反射實現動態平台調用 51
1.10.4 利用GetDelegateForFunctionPointer實現動態平台調用 54
1.11 提昇平台調用性能的技巧 57
1.11.1 顯式地指定要調用的非託管函數的名稱 57
1.11.2 對數據封送處理進行優化 60
1.11.3 儘量避免字符串編碼轉換 66
第2章 平台調用中的數據封送 70
2.1 字符串的封送 71
2.1.1 封送作為參數的字符串 72
2.1.2 封送作為返回值的字符串 80
2.1.3 封送BSTR類型的字符串 82
2.2 封送作為參數的結構體 84
2.3 封送從函數體內部返回的結構體 91
2.3.1 封送作為函數返回值返回的結構體 92
2.3.2 作為函數參數返回結構體 96
2.4 封送結構體中的字符串 98
2.4.1 結構體中的字符指針字段 98
2.4.2 結構體中的字符數組字段 102
2.5 控制結構體字段的封送行為 105
2.6 控制結構體的內存佈局 110
2.6.1 定義結構體的部分字段 111
2.6.2 聯合體的封送 115
2.7 封送嵌套的結構體 119
2.7.1 指向結構體指針字段的嵌套形式 120
2.7.2 結構體實例字段的嵌套形式 123
2.8 封送類 125
2.8.1 封送引用類型的簡單示例 126
2.8.2 封送blittable引用類型 128
2.8.3 將引用類型封送為指向指針的指針 130
2.9 封送數組 132
2.9.1 封送簡單類型數組 132
2.9.2 封送字符串數組 135
2.10 實戰演練 139
2.10.1 背景介紹 139
2.10.2 模塊介紹 140
2.10.3 實現平台調用 144
第3章 使用平台調用技術調用Win32 API 150
3.1 確定要調用的函數 151
3.2 處理Win32函數返回的錯誤碼 156
3.3 處理回調函數 160
3.4 使用Windows定義的常量 166
3.5 封送Win32數據類型 176
3.5.1 可直接複製到本機結構中的數據類型 176
3.5.2 非直接複製到本機結構中的數據類型 177
3.6 處理句柄 179
3.7 傳遞託管對象 186
3.8 使用P/Invoke調用Win32 API的最佳實踐 190
3.8.1 編碼規範 190
3.8.2 性能 192
3.8.3 安全性 205
3.8.4 儘量使用Win32函數對應的.NET託管實現 207

第二部分 C++ Interop
第4章 C++ Interop 210
4.1 從託管C++代碼中調用非託管函數 211
4.1.1 使用平台調用技術調用非託管函數 211
4.1.2 使用C++ Interop調用非託管函數 213
4.2 託管代碼使用非託管C++類 217
4.3 在非託管代碼中使用託管對象 222
4.4 混合編譯託管和非託管代碼 228
4.4.1 同一項目中的代碼混合 228
4.4.2 同一源文件中的代碼混合 230
4.5 C++ Interop中的封送處理 232
4.5.1 封送字符串 233
4.5.2 封送數組 236
4.5.3 封送結構體 237
4.5.4 封送回調函數和委託 239
4.6 C++ Interop的錯誤處理 242
4.6.1 通過託管C++封送非託管代碼拋出的異常 243
4.6.2 在編譯時檢查類型特性 249

第三部分 COM Interop
第5章 在.NET中使用COM組件 251
5.1 早期綁定COM對象 252
5.1.1 為COM類型庫生成互操作程序集 252
5.1.2 通過互操作程序集早期綁定COM對象 257
5.1.3 創建自定義互操作程序集 260
5.2 後期綁定COM對象 262
5.3 通過與非託管代碼互操作創建COM對象 266
5.3.1 通過P/Invoke創建COM對象 266
5.3.2 使用C++ Interop包裝COM對象 269
5.4 封送處理 272
5.4.1 封送常用數據類型 272
5.4.2 封送VARIANT數據類型 277
5.4.3 封送數組 282
5.4.4 封送COM集合 286
5.4.5 封送自定義數據結構 290
5.4.6 處理COM事件 292
5.5 錯誤處理 297
5.5.1 映射COM方法返回值HRESULT到託管代碼 297
5.5.2 使用IErrorInfo接口提供擴展的錯誤信息 305
5.6 提升性能 309
5.6.1 細粒度接口和粗粒度接口 310
5.6.2 優化封送處理性能 311
5.6.3 避免使用後期綁定 311
5.6.4 使用ReleaseComObject釋放COM對象 312
5.6.5 避免跨單元調用 314
5.7 共享互操作程序集 317
第6章 在COM中使用.NET程序集 319
6.1 使用ClassInterface暴露.NET類 320
6.1.1 使用AutoDual實現早期綁定 321
6.1.2 使用AutoDispatch實現後期綁定 324
6.2 使用接口暴露.NET類 327
6.3 使用屬性調整類型庫元數據 332
6.3.1 控制COM標識 332
6.3.2 控制COM可見性 334
6.4 封送處理 336
6.4.1 封送常用數據類型 336
6.4.2 封送字符串 349
6.4.3 封送數組 355
6.4.4 封送自定義數據結構 362
6.4.5 封送集合 367
6.4.6 封送VARIANT數據類型 372
6.4.7 傳遞可選參數 386
6.4.8 暴露託管事件 392
6.5 .NET異常處理 397
6.5.1 將異常轉化為HRESULT 397
6.5.2 提供表示成功的HRESULT返回值 401
6.6 為COM Interop準備程序集 403
附錄A 光盤內容介紹 407
A.1 源代碼和可執行程序 407
A.2 工具軟件 407
A.3 資源 409
附錄B 有關互操作技術的互聯網資源 411
B.1 Interop 411
B.2 P/Invoke 411
B.3 C++ Interop 412
B.4 COM Interop 413
B.5 封送處理 413
附錄C 本書所用術語表 415


我們接受以下的付款方式︰VISA、Mastercard、JCB 信用卡、PayPal、銀行轉帳。