与托管对象交互操作_第1页
与托管对象交互操作_第2页
与托管对象交互操作_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第5章 与托管对象交互操作课堂练习:调用Win32 APIl 解决Win32PlaySound_Error类的PlaySound_DllImport 函数中的错误。 打开Win32PlaySound_ErrorClass 文件,查看PlaySound_DllImport 函数。在函数中有一个错误。你可以试着测试它以确认该错误。该错误是什么呢?答:函数将ExactSpelling 显示设置为True;然而,EntryPoint被设置为PlaySound。但是,在Winmm.dll中,函数PlaySound并不存在;只有 PlaySoundA (Ansi) 和PlaySoundW (Unicode

2、)存在。要纠正这个错误,将 ExactSpelling设置为False。另一个纠正此错误的方法是将EntryPoint显示设置为PlaySoundW。习题1. 运行库为每个COM对象创建几个RCWa)2b)1c)0d)COM对象上的引用数目答:B2. 在C#中,如果要使用API MessageBox,可以用:a)DllImport("user32.dll")public extern int MessageBox(int hWnd, String text, String caption, uint type);b)DllImport("user32.dll&qu

3、ot;)public static int MessageBox(int hWnd, String text, String caption, uint type);c)DllImport("user32.dll")public int MessageBox(int hWnd, String text, String caption, uint type);d)DllImport("user32.dll")public static extern int MessageBox(int hWnd, String text, String caption,

4、uint type);答:D3. 列出 COM 和.NET 组件之间的一些不同之处。答:COM是基于二进制标准的。类的内部二进制布局必须遵守COM的规则。.NET 是基于类型标准的。.NET 中的通用类型系统建立了一个跨语言集成、类型安全和高性能代码执行的框架。COM 使用类型库来存储类型信息。在.NET Framework中,类型信息作为元数据存储,并且对所有类型来说是强制的。元数据嵌入在程序集内部。 COM 方法通常返回一个HRESULT来指示调用成功或失败。在.NET中,托管代码具体表现为异常。 COM 对象的客户端通过引用计数的方式管理对象生存期。在.NET中,运行库通过垃圾回收管理对

5、象的生存期。 COM 使用 GUID进行标识,.NET使用强名称进行标识。4. 如何在基于.NET的应用程序中调用 COM 组件?答:当 .NET 客户端加载一个COM对象时,将创建一个RCW。使用从类型库导出的元数据,运行库创建被调用的COM对象和该对象的包装。每个RCW都在它包装的COM对象上维护一个接口指针缓存。运行库随后对 RCW执行垃圾回收。5. 描述RCW 在互操作中的角色。答:维护对象生存期。封送在托管与非托管代码之间的方法调用。使用选定的 COM接口,而不会将其向 .NET 客户端公开。允许开发人员在编码时把由 RCW包装的COM 对象当作普通对象来使用。6. 用来生成Interop程序集最常用的两种方法是什么?答:Visual Studio .NET IDE和 TLBIMP 工具。7. 列出平台调用服务的功能。答:查找包含函数的DLL。将DLL 加载到内存中。查找函数在内存中的地址并将其参数推送到堆栈上,以封送所需的数据。将控制权转移给非托管函数。将非托管代码函数生成的异常返回给托管调用方。8. 如何在基于.NET的应用程序中调用 Win32 API?答:1)确定要调用函数的名称、参数、参数类型、返回值以及包含它的DLL的名称和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论