- 1、本文档共45页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
COM组件与NETFramework程序集之间的交互操作
* * * * * * * * * * * * * * * * * 在托管代码中调用COM DLL函数 (续) 10.3.3 在托管代码中调用COM DLL函数 Pack 此字段控制类或结构的数据字段在内存中的对齐方式。此字段指示在指定 LayoutKind.Sequential 值时应使用的封装大小。Pack 值必须为 0、1、2、4、8、16、32、64 或 128。值为 0 指示封装对齐方式设置为当前平台的默认方式。 Size 此字段指示类或结构的绝对大小。此字段的值必须大于或等于所有成员的总和。此字段主要由编译器编写器使用,以指定类或结构的总大小(以字节为单位)。在扩展由结构占用的内存(用于直接的非托管访问)时,此字段也很有用。 代码示例C# 代码示例VB 续表: Exception 类的字段映射到其在COM中的对应字段: 将 Exception 类映射到 HRESULT 10.3.4 将 Exception 类映射到 HRESULT 异常字段 COM中的信息源 ErrorCode 从调用返回的 HRESULT 。 HelpLink 如果 IErrorInfo-HelpContext 不为0,则该字符串将通过串联 IErrorInfo-GetHelpFile、“#” 和 IErrorInfo-GetHelpContext 来形成。否则,从 IErrorInfo-GetHelpFile 返回该字符串。 InnerException 在 C# 中始终为 null 引用,而在 Visual Basic 中为 Nothing。 将 Exception 类映射到 HRESULT (续) 10.3.4 将 Exception 类映射到 HRESULT 异常字段 COM中的信息源 Message IErrorInfo-GetDescription 返回的字符串。 Source IErrorInfo-GetSource 返回的字符串。 StackTrace 堆栈跟踪。 TargetSite 方法的名称。此方法返回失败的 HRESULT。 代码示例C# 代码示例VB 续表: 平台调用封送数据。 平台调用封送数据的方法 10.3.5 平台调用封送数据的方法 平台调用将托管类型封送到非托管类型的过程 平台调用封送数据的方法 (续) 10.3.5 平台调用封送数据的方法 类型 封送后的结果 字符串 托管字符串以Unicode 编码格式表示,非托管字符串以ANSI编码格式表示。 类和结构 仍然是类和结构,但是它们必须与 StructureLayoutAttribute 一起使用,以维持布局。 数组 结构非常相似的数组。 泛型类型 不支持泛型类型的封送。 布尔 1、2或 4 字节的值,其值可为 1 或 -1。 . 使用Marshal和MarshalAsAttribute封送数据 10.3.6 使用 Marshal 和 MarshalAsAttribute 类封送数据 Marshal 类 MarshalAsAttribute 类 Marshal 类允许通过分配非托管内存、复制非托管内存块以及将托管类型转换为非托管类型,以控制封送处理过程。 如果不想使用参数、字段或返回值的默认封送处理行为,则可以使用 Sytem.Runtime.InteropServices.MarshalAsAttribute。只有当给定类型可封送到多个类型时才必须使用该属性。 使用Interop服务访问COM组件 使用Interop服务向COM组件公开程序集 使用平台调用服务访问COM组件 小结 实验 习题 第10章 COM 组件与.NET Framework程序集之间的交互操作 10.4 小结 本章介绍了如何使.NET Framework组件与COM组件进行交互。在.NET Framework中,有多种方式可以与COM组件进行交互。最常用的是使用Interop服务。如果只是想简单调用一个COM的方法,例如Windows的API,则可以使用平台调用服务。 小结 使用Interop服务访问COM组件 使用Interop服务向COM组件公开程序集 使用平台调用服务访问COM组件 小结 实验 习题 第10章 COM 组件与.NET Framework程序集之间的交互操作 实验 10.5 实验 参照实验手册,并在教师指导下完成实验报告。 使用Interop服务访问COM组件 使用Interop服务向COM组件公开程序集 使用平台调用服务访问COM组件 小结 实验 习题 第10章 COM 组件与.NET Framework程序集之间的交互操作 习题 10.6 习题 1. 当将名为MyComComponent的COM组件的引用添加到
文档评论(0)