人民幣定價:68 元
定價
:NT$ 408 元優惠價
:
87 折 355 元
絕版無法訂購
商品簡介
作者簡介
目次
商品簡介
本書介紹Windows平臺上的托管代碼與非托管代碼之間進行互操作的各種技術,包括由.NET提供的各種互操作方法、屬性以及各種工具的用法及其工作原理。本書包括3部分,平臺調用——主要用于解決在托管代碼中調用非托管程序設計語言編寫的flat API(如Win32 API、C/C++風格的API等)的問題;C++ Interop——技術專門用于解決托管代碼與C++編寫的非托管代碼之間的互操作問題;COM Interop——介紹了使用COM Interop解決在托管代碼中調用COM組件,以及在COM中調用托管類型的問題。 本書適合所有在開發過程中需要涉及到托管代碼與非托管代碼進行交互操作的.NET開發人員閱讀使用。不論是開始學習.NET編程的開發人員,還是剛剛接觸互操作的資深.NET開發人員,都能從本書中獲益。
作者簡介
黃際洲,2004-2007年連續四年微軟最有價值專家(MVP)。感興趣的研究方向主要包括自然語言處理、信息檢索、聊天機器人等。他曾翻譯了三本游戲編程方面的書籍:《Direct 3D中的2D編程》、《游戲編程All in One》及《Directx角色扮演游戲編程》。
目次
第一部分 P/Invoke
第1章 使用C/C++類型的非托管函數
1.1 平臺調用簡介
1.2 Hello World!示例程序
1.3 獲得要調用的非托管函數聲明
1.4 平臺調用基礎知識
1.5 指定調用約定
1.6 指定入口點
1.7 指定字符集
1.8 處理平臺調用中的異常或錯誤
1.8.1 非托管函數的托管定義導致的異常或錯誤
1.8.2 非托管函數導致的異常或錯誤
1.9 釋放非托管內存
1.9.1 釋放由malloc方法分配的非托管內存
1.9.2 釋放由new運算符分配的非托管內存
1.10 動態平臺調用
1.10.1 平臺調用的原理和過程
1.10.2 通過手動加載非托管DLL實現動態平臺調用
1.10.3 利用反射實現動態平臺調用
1.10.4 利用GetDelegateForFunctionPointer實現動態平臺調用
1.11 提升平臺調用性能的技巧
1.11.1 顯式地指定要調用的非托管函數的名稱
1.11.2 對數據封送處理進行優化
1.11.3 盡量避免字符串編碼轉換
第2章 平臺調用中的數據封送
2.1 字符串的封送
2.1.1 封送作為參數的字符串
2.1.2 封送作為返回值的字符串
2.1.3 封送BSTR類型的字符串
2.2 封送作為參數的結構體
2.3 封送從函數體內部返回的結構體
2.3.1 封送作為函數返回值返回的結構體
2.3.2 作為函數參數返回結構體
2.4 封送結構體中的字符串
2.4.1 結構體中的字符指針字段
2.4.2 結構體中的字符數組字段
2.5 控制結構體字段的封送行為
2.6 控制結構體的內存布局
2.6.1 定義結構體的部分字段
2.6.2 聯合體的封送
2.7 封送嵌套的結構體
2.7.1 指向結構體指針字段的嵌套形式
2.7.2 結構體實例字段的嵌套形式
2.8 封送類
2.8.1 封送引用類型的簡單示例
2.8.2 封送blittable引用類型
2.8.3 將引用類型封送為指向指針的指針
2.9 封送數組
2.9.1 封送簡單類型數組
2.9.2 封送字符串數組
2.10 實戰演練
2.10.1 背景介紹
2.10.2 模塊介紹
2.10.3 實現平臺調用
第3章 使用平臺調用技術調用Win32 API
3.1 確定要調用的函數
3.2 處理Win32函數返回的錯誤碼
3.3 處理回調函數
3.4 使用Windows定義的常量
3.5 封送Win32數據類型
3.5.1 可直接復制到本機結構中的數據類型
3.5.2 非直接復制到本機結構中的數據類型
3.6 處理句柄
3.7 傳遞托管對象
3.8 使用P/Invoke調用Win32 API的最佳實踐
3.8.1 編碼規范
3.8.2 性能
3.8.3 安全性
3.8.4 盡量使用Win32函數對應的.NET托管實現
第二部分 C++ Interop
第4章 C++ Interop
第三部分 COM Interop
第5章 在.NET中使用COM組件
第6章 在COM中使用.NET程序集
附錄A 光盤內容介紹
附錄B 有關互操作技術的互聯網資源
附錄C 本書所用術語表
第1章 使用C/C++類型的非托管函數
1.1 平臺調用簡介
1.2 Hello World!示例程序
1.3 獲得要調用的非托管函數聲明
1.4 平臺調用基礎知識
1.5 指定調用約定
1.6 指定入口點
1.7 指定字符集
1.8 處理平臺調用中的異常或錯誤
1.8.1 非托管函數的托管定義導致的異常或錯誤
1.8.2 非托管函數導致的異常或錯誤
1.9 釋放非托管內存
1.9.1 釋放由malloc方法分配的非托管內存
1.9.2 釋放由new運算符分配的非托管內存
1.10 動態平臺調用
1.10.1 平臺調用的原理和過程
1.10.2 通過手動加載非托管DLL實現動態平臺調用
1.10.3 利用反射實現動態平臺調用
1.10.4 利用GetDelegateForFunctionPointer實現動態平臺調用
1.11 提升平臺調用性能的技巧
1.11.1 顯式地指定要調用的非托管函數的名稱
1.11.2 對數據封送處理進行優化
1.11.3 盡量避免字符串編碼轉換
第2章 平臺調用中的數據封送
2.1 字符串的封送
2.1.1 封送作為參數的字符串
2.1.2 封送作為返回值的字符串
2.1.3 封送BSTR類型的字符串
2.2 封送作為參數的結構體
2.3 封送從函數體內部返回的結構體
2.3.1 封送作為函數返回值返回的結構體
2.3.2 作為函數參數返回結構體
2.4 封送結構體中的字符串
2.4.1 結構體中的字符指針字段
2.4.2 結構體中的字符數組字段
2.5 控制結構體字段的封送行為
2.6 控制結構體的內存布局
2.6.1 定義結構體的部分字段
2.6.2 聯合體的封送
2.7 封送嵌套的結構體
2.7.1 指向結構體指針字段的嵌套形式
2.7.2 結構體實例字段的嵌套形式
2.8 封送類
2.8.1 封送引用類型的簡單示例
2.8.2 封送blittable引用類型
2.8.3 將引用類型封送為指向指針的指針
2.9 封送數組
2.9.1 封送簡單類型數組
2.9.2 封送字符串數組
2.10 實戰演練
2.10.1 背景介紹
2.10.2 模塊介紹
2.10.3 實現平臺調用
第3章 使用平臺調用技術調用Win32 API
3.1 確定要調用的函數
3.2 處理Win32函數返回的錯誤碼
3.3 處理回調函數
3.4 使用Windows定義的常量
3.5 封送Win32數據類型
3.5.1 可直接復制到本機結構中的數據類型
3.5.2 非直接復制到本機結構中的數據類型
3.6 處理句柄
3.7 傳遞托管對象
3.8 使用P/Invoke調用Win32 API的最佳實踐
3.8.1 編碼規范
3.8.2 性能
3.8.3 安全性
3.8.4 盡量使用Win32函數對應的.NET托管實現
第二部分 C++ Interop
第4章 C++ Interop
第三部分 COM Interop
第5章 在.NET中使用COM組件
第6章 在COM中使用.NET程序集
附錄A 光盤內容介紹
附錄B 有關互操作技術的互聯網資源
附錄C 本書所用術語表
主題書展
更多
主題書展
更多書展購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

