- 6
- 0
- 约9.16千字
- 约 38页
- 2018-11-23 发布于天津
- 举报
从托管代码中调用Win32API续-Read
基于C#的 .NET Framework程序设计 第10章 数据流和文件 第11章 Internet访问 第12章 序列化 第13章 远程处理和XML Web Service 第14章 线程和异步编程 第15章 托管代码与非托管代码之间的互操作 第16章 使用Microsoft ADO.NET 访问数据 第17章 属性 第15章 托管代码与非托管代码之间的互操作 集成服务 平台调用 在托管代码中调用COM对象 在COM对象中调用.NET对象 集成服务 平台调用介绍 介绍COM的互操作性 Interop 封送处理概述 平台调用介绍 允许托管代码调用在DLL中实现的非托管方法 为下列功能提供机制 定位实现指定函数的DLL,加载DLL到内存中 发现和调用非托管函数 在托管和非托管代码之间进行参数的封送处理 介绍COM的互操作性 COM和 .NET的不同之处 生命期管理 COM:引用计数 对 .NET: 垃圾回收 服务发现 COM:查询接口 对 .NET:反射 对象内存 COM:固定的 对 .NET: 可以移动的 运行库可调用包装 (RCW) 使用托管客户端调用COM对象上的方法 COM可调用包装 (CCW) 使用COM客户端调用托管对象上的方法 Interop 封送处理概述 互操作封送处理控制在方法调用时如何在托管和非托管内存间传递数据 互操作封送处理是CLR封送处理服务执行的运行时活动 Blittable数据类型对托管和非托管内存是一样的,不需要转换-数据类型(C#关键字) System.Byte (byte) System.SByte (sbyte) System.Int16 (short) System.UInt16 (ushort) System.Int32 (int) System.UInt32 (uint) System.Int64 (long) System.IntPtr System.UIntPtr Interop 封送处理概述(续) Non-blittable 类型是那些在托管和非托管内存具有不同表现的类型,需要进行转换 例如,托管字符串就是non-blittable类型 标准RCW和CCW通常为跨COM和.NET边界调用提供了合适的封送处理 可以使用自定义属性选择性地调整运行库表示托管和非托管代码的形式 第15章 托管代码与非托管代码之间的互操作 集成服务 平台调用 在托管代码中调用COM对象 在COM对象中调用.NET对象 平台调用 平台调用工作方式 从托管代码中调用 Win32 API 调用非托管函数 钉住操作 封送处理 平台调用的性能问题及局限性 平台调用工作方式 平台调用工作过程 定位包含被调用方法的DLL 把该DLL加载到内存 查找函数在内存中的地址并将其参数压入堆栈,以封送所需的数据 把控制权移交给非托管函数 平台调用工作方式(续) 从托管代码中调用Win32 API 用static和extern C#关键字声明方法 导入实现非托管函数的DLL 从托管代码中调用Win32 API(续) 调用非托管函数 有两种方法可调用非托管DLL中的方法 使用DLLImport属性 导入System.Runtime.InteropServices命名空间 声明一个静态方法来调用非托管方法,不用提供方法实现 使用DllImport属性标注方法,指定输出非托管方法的DLL的名称 钉住操作 数据被临时锁定在当前内存位置,防止被CLR的垃圾回收器重新分配 数据在托管和非托管代码之间传递时,执行锁定操作 如果对象有固定的布局,在托管和非托管内存中数据表现形式一样,则通过指针进行封送 有固定布局,但数据在托管和非托管内存中表现不一致,通过引用来封送 如果对象没有固定的布局,通过值或者引用传递,如System.String和System.StringBuffer对象 封送处理 大多数数据类型在托管和非托管内存中都有公共的表示形式,而不需要封送拆收器的特殊处理,称为可直接复制到本机结构中的类型 非直接复制到本机结构中的类型在托管和非托管语言中具有不同的或不明确的表示形式。当被封送时,这些类型可能需要转换 用MarshalAs属性来指定自定义封送处理 平台调用的性能问题及局限性 平台调用只支持带整数参数的回调函数 平台调用不对所有类型提供支持 平台调用只支持调用从DLL导出的全局函数 当以引用传递数组类型的参数时,返回的数组大小被调整为 1 实验A 调用 Win32 API 函数 第15章 托管代码与非托管代码之间的互操作 集成服务 平台调用 在托管代码中调用COM对象 在COM对象中调用.NET对象 在托管代码中调用COM对象 运行库可调
您可能关注的文档
- 中华电信从业人员绩效考核要点判决书精要-中华电信工会台南分会.PPT
- 中国地质大学长城学院滚动轴承.PPT
- 中国成人教育协会成人教育科研规划课题立项申请书.DOC
- 中国执业药师培训-抗菌药物临床合理应用的若干问题-河北药师协会.PPT
- 中国环境保护产业协会-青岛环保产业协会.DOC
- 中国的医疗保障制度及改革.PPT
- 中国的地质灾害高二地理组马守知地震灾害自学提示.PPT
- 中国民用航空飞行学院-巴中.DOC
- 中央戏剧学院新校区理论教学楼多媒体教室设备采购及安装.DOC
- 中山大学国际商学院优秀学生奖学金评奖总则-国际金融学院.DOC
- 2026年重庆传媒职业学院单招综合素质考试题库有答案解析.docx
- 2026年辽宁省阜新市高职单招职业适应性测试考试题库带答案解析.docx
- 2026年辽宁省鞍山市高职单招职业适应性测试考试题库有答案解析.docx
- 2026年泰州职业技术学院单招职业技能考试题库有答案解析.docx
- 2026年重庆三峡学院单招职业适应性测试题库有答案解析.docx
- 2026年四川化工职业技术学院单招职业技能考试题库带答案解析.docx
- 2026年黑龙江省双鸭山市高职单招职业适应性测试考试题库带答案解析.docx
- 2026年云南工商学院单招综合素质考试题库有答案解析.docx
- 2026年新疆轻工职业技术学院单招综合素质考试题库有答案解析.docx
- 2026年南阳科技职业学院单招职业适应性测试题库带答案解析.docx
原创力文档

文档评论(0)