Windows下的接口调用方法,设备驱动方法和COM编程技术.doc_第1页
Windows下的接口调用方法,设备驱动方法和COM编程技术.doc_第2页
Windows下的接口调用方法,设备驱动方法和COM编程技术.doc_第3页
Windows下的接口调用方法,设备驱动方法和COM编程技术.doc_第4页
Windows下的接口调用方法,设备驱动方法和COM编程技术.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

信息学院微机原理与接口技术自主学习报告报告名称:Windows下的接口调用方法, 设备驱动方法和COM编程技术姓名: 学号: 专业: 班级: 时间:2010年6月15日星期二摘要Windows操作系统是一个采用图形界面的、多任务的操作系统。这个系统不同于单用户的操作系统DOS,她的多任务特性,决定了系统的资源是有各个任务共享而不是独占的。为此,Windows的体系结构也与DOS的体系结构完全相同。AbstractWindows operating system is a graphical interface, multi-tasking operating system. This system is different from the single-user operating system, DOS, her multi-tasking features, determine the systems resources are shared in various tasks, rather than exclusive. To this end, Windows system structure and architecture of DOS is identical目 录摘要.Abstract.第一章Windos下的接口调用2.1 接口调用 的概念及特点.第二章 设备驱动.3.1 为什么需要设备驱动3.2 什么是设备驱动程序.3.3 设备驱动程序编写简介.第三章 COM编程技术.4.1 COM的概念4.2 COM对象.4.3 COM接口4.31 从API到COM接口4.32 COM接口的定义和标识.第四章 结论第一章Windos下的接口调用一、windows下的接口调用1、Windows的体系结构 在windows体系结构中,分为用户和系统内核两个不同的层次,这是windows操作系统为了对系统资源进行安全有效的管理,使用了cpu在不同运行空间的不同运行管理权,在windows系统的核心管理进程内包含虚拟内存管理、运行管理、系统任务分发管理等最重要系统的核心功能,也包括了一些与核心功能机密相关,为了提高系统效率的内核win32子系统功能。2、windows操作系统的内核进程 windows9x的内核进程 系统核心进程是有虚拟设备驱动层VXD和虚拟机管理层构成的。虚拟设备驱动层是为了在多任务的模式下,使硬件系统给多个不同的任务以统一的使用模式。首先为硬件提供多任务的支持,对于实际上是共享的硬件设备,使每个任务就如同设备是被自己独占使用一样;其次是要增强操作系统对于硬件设备的适应能力。早VXD中的X是指某类设备。 VXD的功能对于每一个用户任务来说,很大程度上类似于单任务DOS环境下的BIOS。而且,一些在DOS环境下的单任务硬件驱动程序,如果可以加入VXD支持,也可在Windos9X环境中应用。 Windows NT 的内核进程 微核是一些被操作系统内核调用的微型软件模块,称为操作系统的原子功能模块。微核的作用是为操作系统中所有低层次的通用功能提供支持,每个设备驱动都调用了大量的微核操作来完成自己的功能。微核层的实现与具体的CPU系列相关,配合硬件抽象层HAL,可共同完成Windos NT操作系统与硬件平台的无关性。微核层代表了同样能够的驱动操作,而微核层之下的实际硬件平台功能是由HAL将一组标准的驱动程序与硬件相关的不同驱动操作来实现。因此,对于微核层之上的操作系统来说,只存在一个完全相同的虚拟硬件平台。从这里可以看到,微核与HAL就是Windows NT操作系统与具体硬件平台的接口。 位于设备驱动程序层之上的是可执行层。与Windows 9X 类似,在可执行层内,除了有系统管理服务的分发、内存分页管理等操作系统的内核重要模块外,还包括一些操作系统的的主要部件。他们主要包括:I/O管理器、对象管理器、安全引用监视器、进程管理器、局部过程调用的、内存管理器和高速缓冲管理器、Win32 支持部件。第二章 设备驱动方法3.1 为什么需要设备驱动从 Windows 3.1 开 始 , 对 于 硬 件 设 备 的 访 问 便 采 取 了 一 种 设 备 驱 动 程 序 的 方 法 , 客 户 通 过 设 备 驱 动 程 序 来 获 得 硬 件 的 参 数 或 者 设 置 , 但 是 由 于 16 位 的 操 作 系 统 基 于 原 来 的 DOS , 所 以 客 户 程 序 仍 然 可 以 通 过 一 些 BIOS 或 者 DOS 的 DPMI 中 断 调 用 来 实 现 对 硬 件 的 操 作 。32 位 的 操 作 系 统 如 Windows 95 NT 不 再 基 于 16 位 DOS , 所 以 用 户 如 果 需 要 实 现 对 硬 件 中 断 、 DMA 、 I/O 或 者 是 绝 对 存 储 访 问 , 都 不 可 避 免 地 必 须 通 过 设 备 驱 动 程 序 。 Windows 95 操 作 系 统 能 够 实 现 多 线 程 、 多 进 程 的 应 用 , 系 统 通 过 一 个 虚 拟 机 管 理 器 VMM 32 、 VXD(Virtual machine manager) , 通 过 它 和 其 他 的 设 备 驱 动 程 序 合 作 , 来 实 现 多 个 进 程 间 的 协 调 工 作 , 防 止 一 个 进 程 的 运 行 导 致 另 一 个 进 程 的 崩 溃 。3.2 什么事设备驱动程序设 备 驱 动 程 序 被 用 来 管 理 系 统 资 源 ( 硬 件 或 者 件 ) 的 可 执 行 二 进 制 代 码 , 通 过 设 备 驱 动 程 序 , 多 个 进 程 可 以 同 时 使 用 这 些 资 源 , 从 而 可 以 实 现 多 进 程 并 行 运 行 。 设 备 驱 动 程 序 一 般 是 以 “ VxD ” 为 后 缀 名 , 其 意 思 是 虚 拟 化 某 些 设 备 (Virtual something Device) 。386 以 上 的 微 处 理 器 有 4 个 优 先 级 别 : 0 级 、 1 级 、 2 级 、 3 级 , 一 般 操 作 系 统 运 行 于 优 先 级 0 级 上 , 而 用 户 程 序 运 行 在 3 级 上 。 VxD 运 行 于 0 级 上 , 其 在 内 存 中 的 位 置 也 是 处 在 操 作 系 统 保 护 的 空 间 之 内 的 。另 外 , Windows 还 提 供 一 些 运 行 在 优 先 级 3 上 的 驱 动 程 序 , 主 要 是 串口 的 通 信 程 序 和 并 口 的 打 印 机 程 序 , 这 些 程 序 以 “ DRV ” 为 后 缀名 。 但 是 一 般 说 来 , 运 行 于 优 先 级 别 3 上 面 的 I/O 比 运 行 于 0 级 的 慢。3.3 设备驱动程序编写简介设 备 驱 动 程 序 的 编 写 有 一 定 规 范 , 需 要 对 于 32 位 的 汇 编 和 C 语 言 比较 熟 悉 ; 一 般 完 全 由 汇 编 语 言 编 写 , 但 是 也 可 以 用 C 与 汇 编 的 混 合语 言 实 现 ; 首 先 需 要 有 Microsoft DDK(Device Driver Kit) , 一 般 工 具 是MASM6 11 和 VC2 0 以 上 版 本 。通 常 设 备 驱 动 程 序 由 五 个 段 组 成 , 它 们 分 别 是 : VxD CODE 、 VxD DATA 、 VxD ICODE 、 VxD IDATA 和 VxD REAL INIT 。 VxD CODE 是 保 护 模 式 下 的 代 码 段 , 一 般 这 个 段 包 括 设 备 驱 动 程 序 的 控制 程 序 、 回 收 函 数 、 服 务 程 序 和 接 口 函 数 , 这 个 段 也 命 名 为 LTEXT ; VxD DATA 是 保 护 模 式 下 的 数 据 段 , 一 般 包 括 设 备 驱 动 程序 的 描 述 表 , 以 及 一 些 全 局 变 量 , 这 个 段 也 命 名 为 LDATA ; VxD ICODE 是 保 护 模 式 下 的 初 始 化 代 码 段 , 包 括 一 些 初 始 化 时 使 用 的服 务 程 序 , 虚 拟 机 管 理 器 (VMM) 在 初 始 化 结 束 之 后 就 将 这 个 段 取 消, 这 个 段 也 命 名 为 ITEXT ; VxD IDATA 是 保 护 模 式 下 的 初 始 化 数据 段 , 包 括 一 些 初 始 化 时 使 用 的 数 据 , 虚 拟 机 管 理 器 (VMM) 在 初 始化 结 束 之 后 就 将 这 个 段 取 消 , 这 个 段 也 命 名 为 IDATA ; VxD REAL INIT 包 括 实 模 式 下 的 初 始 化 数 据 和 代 码 段 , 虚 拟 机 管 理 器(VMM) 最 先 就 是 装 入 这 个 代 码 段 , 在 进 程 返 回 之 后 这 个 段 取 消 , 再装 入 其 他 代 码 段 , 这 个 段 又 命 名 为 RTEXT 。第三章 COM编程技术4.1 COM的概念所谓COM(Componet Object Model,组件对象模型),是一种说明如何建立可动态互变组件的规范,此规范提供了为保证能够互操作,客户和组件应遵循的一些二进制和网络标准。通过这种标准将可以在任意两个组件之间进行通信而不用考虑其所处的操作环境是否相同、使用的开发语言是否一致以及是否运行于同一台计算机。4.2 COM对象组件对象模型(COM)对象是一个使用COM规格的可以重复使用的软件组件。使用COM规格可以确保COM对象很好的工作,并且很容易的结合到你的应用程序中。事实上,COM基本相当于一个黑匣子,这个黑匣子能为你的应用程序完成很多的工作。COM对象一般用动态连接库(DLL)实现。和普通的DLL一样,COM对象暴露一些方法,你的应用程序能够呼叫它,以便完成任何支持的操作。应用程序与COM对象的相互作用有点儿像应用程序与C+对象之间的相互作用,但他们之间又有一些明显的不同。 4.3 COM接口COM规范的核心内容是关于接口的定义,虽然COM接口本身并不复杂,但围绕COM接口有很多内容值得仔细探讨,包括接口的标识、接口函数的调用习惯、参数处理、接口与对象的关系以及接口与CC+的关系、COM接口所具有的特性等。4.31 从API到COM接口为了把应用系统和组件程序连接起来,又能使它们协同工作、最简单的做法是先定义一组查字典的函数,而且这组函数尽可能一般化、不要加入特定的与字典库相关的知识可以按表5.6列出的函数来定义字典库的功能 表5.6 字典库API函数函数功能说明Initialize初始化Loadlibrary装入字典库insertWord插入一个单词DeleteWord删除一个单词LookupWord查找单词RestoreWord把内存中的字典库装入制定的文件中FreeLibrary释放字典库图下所示显示了API接口的示意图,应用程序或者组件程序通过一个平面结构的API层与字典进行交互。经常可以看到这种借口形式,尤其在一些软件开发包中最为常见,应用A或组件A应用B或组件B字典组件应用程序A和B通过API接口共用一个字典组件平面新的API接口层可以很好的把两个程序连接以来,但存在以下一些问题:(1):当API函数非常多时,使用非常不方便,需要对函数进行组织(2)API函数需要标准化,按照统一的调用方式进行处理,以适应不同的语言编程实现。参数的传递顺序、参数类型、参数返回处理都需要标准化。COM接口定义了一套完整的接口规范,不仅可以弥补以上API作为组件接口的不足,还充分发挥了组件对象的优势,并实现了组件对象的多态性。4.32 COM接口的定义和标识对于COM来讲,接口是一个包含一个函数指针数组的内存结构。每一个数组元素包含的是一个由组件所实现的函数地址。对于COM而言,接口就是此内存结构,其他东西;均是COM不关心的实现细节。在C+中,可以用抽象基类来实现COM接口。由于一个COM组件可以实现支持任意数目的接口,因此对于这样的组件,可以用抽象基类的多重继承来实现。用类来实现组件将比其他方法更为容易。对于客户来说,一个组件就是一个接口集。客户只能通过接口才能和COM组件打交道。从整体上讲,客户对于一个组件可以说是知之甚少的。通常情况下,客户甚至不必知道一个组件所提供的所有接口。客户同组件的交互是通过接口完成的。在客户查询组件其他的接口时,也是通过接口完成的。这个接口就是IUnknown。Iunknown接口的定义包含在Win32 SDK中的UNKNOWN.H的头文件中,引用如下: interface IUnknownvirtual HRESULT-_ _stdcall QueryInterface(const IID& iid,void *ppv)=0;virtual ULONG_ _stdcall AddRef( )=0;virtual ULONG_ _Release( )=0;

温馨提示

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

评论

0/150

提交评论