当前位置:首页 > 工业技术
精通.NET互操作  P/Invoke、C++ Interop和COM Interop
精通.NET互操作  P/Invoke、C++ Interop和COM Interop

精通.NET互操作 P/Invoke、C++ Interop和COM InteropPDF电子书下载

工业技术

  • 电子书积分:14 积分如何计算积分?
  • 作 者:黄际洲,崔晓源编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2009
  • ISBN:9787115204349
  • 页数:419 页
图书介绍:本书详细描述了如何在.net中重用原来在C++下的代码,技术全面,讲解细致,分析透彻,例子丰富。本书适合中高级程序员阅读,可以把他们大量的工作积累(如很多dll)转化到新的框架中。
《精通.NET互操作 P/Invoke、C++ Interop和COM Interop》目录

第一部分 P/Invoke 1

第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 210

第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 251

第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

相关图书
作者其它书籍
返回顶部