- 1、本文档共44页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于c的
基于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
- 国庆62周年主题班会.ppt
- 国庆主题班会5.ppt
- 国庆促销活动指导手册 ppt素材.ppt
- 国庆促销活动指导手册素材.ppt
- 国庆促销素材.ppt
- 国庆节、中秋节祝福.ppt
- 国窖1573冰饮风尚执行方案.ppt
- 国立屏东科技大学2005-2008教育施政主轴执行计画.ppt
- 国际代工策略联盟与并购.ppt
- 2024年江西省高考政治试卷真题(含答案逐题解析).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)物理试卷(含答案详解).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)地理试卷(含答案详解).pdf
- 2024年内蒙通辽市中考化学试卷(含答案逐题解析).docx
- 2024年四川省攀枝花市中考化学试卷真题(含答案详解).docx
- (一模)长春市2025届高三质量监测(一)化学试卷(含答案).pdf
- 2024年安徽省高考政治试卷(含答案逐题解析).pdf
- (一模)长春市2025届高三质量监测(一)生物试卷(含答案).pdf
- 2024年湖南省高考政治试卷真题(含答案逐题解析).docx
- 2024年安徽省高考政治试卷(含答案逐题解析).docx
文档评论(0)