精通。NET互操作

精通。NET互操作

《精通。NET互操作P/Invoke,C++Interop和COMInterop》介紹Windows平台上的託管代碼與非託管代碼之間進行互操作的各種技術,包括由。NET提供的各種互操作方法、屬性以及各種工具的用法及其工作原理。精通。NET包括3部分,平台調用——主要用於解決在託管代碼中調用非託管程式設計語言編寫的flatAPI(如Win32API、C/C++風格的API等)的問題;C++Interop——技術專門用於解決託管代碼與C++編寫的非託管代碼之間的互操作問題;COMInterop——介紹了使用COMInterop解決在託管代碼中調用COM組件,以及在COM中調用託管類型的問題。

基本介紹

  • 書名:精通。NET互操作
  • 作者:黃際洲 (作者), 崔曉源 (作者)
  • ISBN:9787115204349
  • 類別:圖書 > 計算機與網際網路 > .net
  • 頁數:417頁
  • 定價:68.00 元
  • 出版社:人民郵電出版社
  • 出版時間:2009
  • 裝幀:平裝
  • 開本:16
內容簡介,作者簡介,編輯推薦,目錄,

內容簡介

《精通.NET互操作P/Invoke,C++Interop和COMInterop》適合所有在開發過程中需要涉及到託管代碼與非託管代碼進行互動操作的.NET開發人員閱讀使用。不論是開始學習.NET編程的開發人員,還是剛剛接觸互操作的資深.NET開發人員,都能從《精通.NET互操作P/Invoke,C++Interop和COMInterop》中獲益。

作者簡介

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

編輯推薦

《精通.NET互操作P/Invoke,C++Interop和COMInterop》涵蓋了:
使用P/Invoke調用C庫函式及windowsAPI;
使用C++Interop與C++類庫及核心算法庫進行互動;
使用COMInterop實現託管代碼與COM之間的互動。
其實書本就是個工具也可以說是個老師,無論怎么用最後還是自己的時間重要

目錄

第一部分P/Invoke
第1章使用C/C++類型的非託管函式1
1.1平台調用簡介2
1.2HelloWorld!示例程式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章使用平台調用技術調用Win32API150
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調用Win32API的最佳實踐190
3.8.1編碼規範190
3.8.2性能192
3.8.3安全性205
3.8.4儘量使用Win32函式對應的.NET託管實現207
第二部分C++Interop
第4章C++Interop210
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.5C++Interop中的封送處理232
4.5.1封送字元串233
4.5.2封送數組236
4.5.3封送結構體237
4.5.4封送回調函式和委託239
4.6C++Interop的錯誤處理242
4.6.1通過託管C++封送非託管代碼拋出的異常243
4.6.2在編譯時檢查類型特性249
第三部分COMInterop
第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將異常轉化為HRESULT397
6.5.2提供表示成功的HRESULT返回值401
6.6為COMInterop準備程式集403
附錄A光碟內容介紹407
A.1原始碼和可執行程式407
A.2工具軟體407
A.3資源409
附錄B有關互操作技術的網際網路資源411
B.1Interop411
B.2P/Invoke411
B.3C++Interop412
B.4COMInterop413
B.5封送處理413
附錄C本書所用術語表415
……

相關詞條

熱門詞條

聯絡我們