书签 分享 收藏 举报 版权申诉 / 51
上传文档赚钱

类型接口软件技术课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:3324921
  • 上传时间:2022-08-20
  • 格式:PPT
  • 页数:51
  • 大小:122.50KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《接口软件技术课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    接口 软件技术 课件
    资源描述:

    1、 本章的内容有:接口概述 DOS和Windows下的接口调用方法 COM编程技术5.1 接口概述5.1.1 接口的功能 一般来说,由于CPU在与I/O设备进行数据交换时通常存在:速度不匹配,时序不匹配,信息格式不匹配 信息类型不匹配 接口软件(驱动软件)的功能 1接口初始化接口初始化 2分析与检查功能调用分析与检查功能调用 3完成相关硬件的功能调用完成相关硬件的功能调用 4异常情况的处理异常情况的处理5.1.2 驱动软件的运行方式 1无条件同步方式无条件同步方式 2异步查询方式异步查询方式 3中断方式中断方式 无条件同步方式无条件同步方式 可在任意时刻对硬件进行驱动,不必考虑硬件的接受能力 这

    2、只有在硬件的执行速度很快,在任意时机都能响应驱动软件的驱动控制时才有可能。只在非常简单或速度非常高的系统中才可能存在。异步查询方式 驱动程序应该对外设硬件的状态进行查询,在适当的时机进行硬件功能的驱动或结果的取回。使用异步查询方式时,外设硬件必须能根据硬件的运行情况,将状态送给驱动程序,以供驱动程序查询。由于驱动程序必须在程序中反复判断外设的硬件状态,等待硬件确定工作状态的到来,因此程序的运行效率不高。返回 中断方式 驱动程序分为两个部分 第一部分负责对外设硬件的启动驱动,完成之后,这部分驱动程序就退出运行,CPU转而执行其他的应用程序 第二部分:中断服务程序。透明地窃取应用程序的极少量执行时

    3、间。中断运行方式是效率最高的调用方式,但要求硬件必须有产生中断源的能力,并且需要占用系统的一些软、硬件中断控制资源。5.1.3 接口缓冲区 1CPU中的通用寄存器中的通用寄存器 适用于交互数据较少的情况,最快、最方便、最简单可靠的方式。2公用存储区公用存储区 公用存储区是由外设调用者和外设双方都可寻址的一块连续内存块,用于双方的数据交互。3堆栈堆栈 堆栈是一种后进先出的数据结构。使用堆栈时,要特别注意栈中各个数据项的先后次序,以及堆栈指针的设置和恢复操作。5.1.4 接口软件及层次结构操作系统驱动软件硬件层应用软件图5.1接口软件的层次接口DOSBIOS硬件层应用软件应用环境驱动软件硬件层应用

    4、软件设备管理用户空间内核空间B)Windows的调用层次A)dos系统的调用层次图5.2 设备调用层次5.2 DOS系统下的接口调用 DOS系统是单用户的操作系统DOS系统提供给用户的编程界面大体有如下几种:裸机层软件开发,利用芯片或板卡(适配器)支持的寄存器或内存数据区编程。需要用户非常清楚设备的硬件细节,编程较复杂,但软件实现速度最快。BIOS级软件开发,利用BIOS基本输入输出系统所提供的一些服务功能编程。系统功能级软件开发,利用DOS系统提供的系统功能编程。5.2.1 BIOS功能级软件接口及实现1BIOS级软件接口概述级软件接口概述 BIOS基本输入输出系统由一批子程序组成,基本输入

    5、输出系统由一批子程序组成,负责管理系统内的输入输出设备负责管理系统内的输入输出设备 直接为直接为DOS操作系统和应用程序提供底层操作系统和应用程序提供底层设备驱动服务。设备驱动服务。大多数的驱动程序以软件中断方式调用大多数的驱动程序以软件中断方式调用,少少数由硬件中断调用。数由硬件中断调用。表5.1 常用BIOS服务功能BIOS服务功能号功 能打印屏幕服务05H将当前视频页内容送到默认打印机视频服务10H为显示适配器提供I/O支持软盘服务13H提供软盘的读、写、格式化、初始化、诊断硬盘服务13H提供硬盘的读、写、格式化、初始化、诊断串行通信服务14H为串行适配器提供字符输入/输出系统服务15H

    6、系统级子服务键盘服务16H为键盘提供I/O支持并行打印机服务17H为并行打印机提供I/O支持 日期时间服务1AH设置和读取时间、日期、声源等2视频服务 INT l0H AH寄存器选择视频服务功能 待写的字符或像素值一般在AL寄存器中传递。功能调用保存BX、CX、DX及段寄存器的值。其他寄存器的内容(特别是SI、DI)不保存 X坐标(列号)在CX(图形功能)中或DL(正文功能)中传递 显示页在BH中传递,显示页从零开始计数 例如:利用BIOS视频服务的AH=0CH子功能实现写像素点。调用子程序之前,需要用DX保存行号,CX保存列号,AL保存颜色值,这是0CH子功能要求的。WRITINGPIXEL

    7、 PROCNEARPUSHAX MOVAH,0CHINT10HPOPAXWRITINGPIXELENDP3键盘服务 键盘ISR(键盘中断服务程序)INT 09H硬件中断、键盘DSR(键盘设备服务程序),INT 16H软件中断 BIOS键盘服务包括3个子功能:0号功能、1号功能、2号功能 子功能号 含 义出 口 参 数AH=0从键盘输入一个字符AL=ASCII码(或0)AH=扫描码(或扩展扫描码)AH=1判断键盘有无字符输ZF=0 有键按下,键代码保存在AX中ZF=1 无键按下AH=2当前键盘特殊键状态AL=KB-FLAG的变量4并行打印机服务 INT 17H 0号功能(给打印机传送个字符)1号

    8、功能(初始化打印机)2号功能(读打印机状态)均可通过AH返回打印机状态字节=1,不忙,打印机可用=1,打印机表示响应=1,打印机无纸=1,打印机选中=1,打印机出现超时错误未定义未定义=1,打印机出错D7 D6 D5 D4 D3 D2 D1 D05.2.2 DOS功能级软件接口及调用实例1DOS功能级软件接口调用概述功能级软件接口调用概述 主要包括:磁盘管理、内存管理、基本输入输主要包括:磁盘管理、内存管理、基本输入输出管理等。出管理等。子功能都有一个00H57H的功能编号 INT 21H 00H0CH:字符I/O管理。包括键盘、显示器、打印机、异步通信口的管理 0DH24H:文件管理。包括复

    9、位、选择磁盘,打开、关闭、删除文件,顺序读、写文件,建立文件,重命名文件,查找驱动器分配表信息,随机读、写文件,查看文件长度 25H26H非设备系统调用。包括设置中断向量,建立新程序段 27H29H文件管理。包括随机块读写、分析文件名 2AH2EH非设备系统调用。包括读取、设置日期、时间 2FH38H扩充的系统调用。包括读取DOS版本号,终止进程,读取中断矢量,读取磁盘空闲空间 39H3BH目录组。包括建立子目录,修改当前目录,删除目录项 3CH46H:扩充的文件管理。包括建立、打开、关闭文件,从文件或设备读写数据,在指定路径删除、移动文件,修改文件属性,设备I/O控制,复制文件标志47H取当

    10、前目录组。48H4BH:扩充的内存管理。包括分配内存、释放已分配的内存、分配内存块、装入或执行程序等 4CH4FH:扩充的系统调用。包括终止进程、查询子程序的返回代码、查找第一个相匹配的文件、查找下一个相匹配的文件 50H53H:扩充的系统调用。供DOS内部使用 54H57H:扩充的系统调用。包括读取校验状态、重新命名文件、设置读取日期及时间2基本I/O功能调用 键盘输入(1号调用)无回显的键盘输入(8号调用)控制台输入输出(6号调用)无回显的控制台输入(7号调用)打印输出(5号调用)输出字符串(9号调用)输入字符串(0AH调用)异步通信输入输出(3、4号调用)日期与时间的设置与获取(2AH、

    11、2BH、2CH、2DH调用)3DOS功能调用实例MOVAX,MYDATAMOVDS,AXDISP:MOVDX,OFFSET MESSEGEMOVAH,09HINT21H;利用9号功能显示字符串KEY:MOVDX,OFFSET PARAMETERSMOVAH,10INT21H;利用10号功能接收字符到缓冲区5.3 Windows下的接口调用 5.3.1 Windows的体系结构的体系结构Win32位子系统虚拟设备管理层VXDIntel硬件平台应用软件虚拟DOS机硬件抽象层HAL多种硬件平台应用软件NT系统管理用户态内核态B)Windows NTA)Windows 9X图5.4 Windows的体

    12、系结构虚拟DOS机虚拟机管理层VMM设备驱动层内核Win32位子系统其它系统Win32位子系统5.3.2 Windows操作系统的内核进程1Windows 9X的内核进程的内核进程 系统工作在基于Intel 32位CPU的硬件平台上,运行在32全位地址空间的保护模式下。系统核心进程空间工作在CPU的最高特权级0,用户空间工作在 CPU的低特权级3。系统核心进程是由虚拟设备驱动层VXD和虚拟机管理层VMM构成的 VXD VXD目的:为硬件提供多任务的支持,增强操作系统对于硬件设备的适应能力 VXD中的X是指某类设备(鼠标的虚拟设备驱动程序称为VMD,通过VMD就可直接驱动鼠标;键盘的虚拟设备驱动

    13、程序称为VKD)VMM 位于虚拟设备驱动层VXD之上 用户通过调用Win32的接口API函数,就可以通过VMM获得系统内核及设备驱动的功能服务 2Windows NT的内核进程执行层执行层I/O管管理器理器(核(核心驱心驱动程动程序)序)对象对象管理管理器器安全安全引用引用监视监视进程进程管理管理器器局部局部过程过程调用调用内存内存管理管理器器CACHE管理管理器器窗口管理窗口管理器和图形器和图形设备接口设备接口图形设备图形设备驱动驱动微核层微核层硬件抽象层硬件抽象层 硬件抽象层 微核层 微核是一些被操作系统内核调用的微型软件模块 微核的作用是为操作系统中所有低层次的通用功能提供支持,例如处理

    14、和发送中断,消息同步,存储和恢复线程环境等,每个设备驱动程序内都调用了大量的微核操作来完成自己的功能 可执行层 在可执行层内,除了有系统管理服务的分发、内存分页管理等操作系统的内核重要模块外,还包括一些操作系统的主要部件 可执行层 I/O管理器 对象管理器 安全引用监视器 进程管理器 局部过程凋用 内存管理器和高速缓冲管理器 Win32支持部件5.3.3 Windows NT的设备驱动调用 1设备驱动的调用过程设备驱动的调用过程图5.6 Windows设备驱动程序调用I/O管理器低层驱动程序硬件平台应用软件I/O系统服务用户态内核态中间层驱动程序高层驱动程序内存管理进程管理Win 32子系统及

    15、其它管理器Win32位子系统IRP2设备驱动程序的接口模型 为了规范和统一设备驱动程序的外观和行为,使用驱动程序的接口模型。在该模型中,每当I/O管理器要驱动程序执行一个功能时,它就以一套特定的调用参数输入输出请求包IRP,以这个模型中的某类功能接口的入口,调用这些指定的功能。包括如下功能:DriveEnty 驱动程序入口 Dispatch entry point 分发入口 ISR(Interrupt Service Routine)中断服务程序入口 DPC For ISR/Custom DPC 中断的延迟调用或定制延迟调用入口 DPC For ISR/Custom DPC 中断的延迟调用或定

    16、制延迟调用入口。Complete Request完成例程入口。Cancel Reinitialize StartIo Unload IoTimer AdapterControl Time Dpc3Windows的用户层进程 用户环境层 用户程序层 系统装入管理系统目录、文件目录、系统注册表磁盘外存储器程序模块应用程序模块请求模块查询装载定位模块装载 模块的动态装载4Windows的功能调用 Windows系统中,对于用户提出的设备使用请求,是通过调用Win32子系统中的API函数实现的。Windows 9X与Windows NT中的Win32子系统并不相同,两个子系统是相互独立的 Window

    17、s NT中,Win32子环境有两类:一类位于用户态空间,用户态API 而另一类位于内核态空间,内核态API 5Windows的功能调用函数API的分类及特征 API分类 窗口管理类API 图形设备接口类API 系统服务类API Windows的API函数担负着为所有的应用程序提供所有的服务功能。它们的主要特征是:支持多任务 采用模块化的结构 支持动态装载链接6API应用举例文件操作 建立文件函数CreatFile 文件打开操作函数HFILE_lopenHFILE_lopen(LPCSTR lpPathName,int iReadWrite)文件建立操作函数HFILE_lcreat HFILE_

    18、lcreat(LPCSTR lpPathName,int iAttribute)移动文件的读写指针函数SetFilePointDWORD SetFilePoint(HANDLE hFile,LONG iDistanceToMove,PLONG lpDistanceToMoveHigh,DWORD dwMoveMethod)移动文件指针操作函数LONG_llseekLONG_llseek(HFILE hFile,LONG LOffset,int LOrigin)读文件函数ReadFile及写文件函数WriteFile HANDLE CreateFile(LPCTSTR lpFileName,DW

    19、ORD dwDesiredAccess,DWORD dwShareMode,LPSECURITY_ATTRIBUTES lpsecurityAttributes,DWORD dwCreationDisposition,DWORD dwFlagsAndAttributrs,HADEL hTemplateFile)BOOL ReadFile(HANDLE hFile,LPVOID ipBuffer,DWORD nNumberOfByteToRead,LPDWORD lpNumberOfBytesRead,LPOVERLAPPED lpOverlapped)BOOL WriteFile(HANDLE

    20、 hFile,LPCVOID lpBuffer,DWORD nNumderOfBytesToWrite,LPDWORD lpNumberOfBytesWrite,LPOVERLAPPED lpOverlapped)文件读操作函数UINT_lread及文件写操作函数UINT_ lwrite UINT_lread(HFILE hFile,LPVOID lpBuffer,UINT uBytes)UINT_ lwrite(HFILE hFile,LPCSTR lpBuffer,UINT uBytes)关闭对象句柄函数CloseHandle及文件关闭操作函数HFILE_lcloseBOOL CloseH

    21、andle(HANDLE hObject)HFILE_lclose(HFILE hFile)内存空间分配函数GlobalAllocHGLOBAL GlobalAlloc(Uint uFlags,DWORD dwBytes)锁定一个全局内存对象函数GlobalLockLPVOID GlobalLock(HGLOBAL hMem)7.API应用举例窗口操作 主程序函数:int PASCAL WinMain();主窗口的消息处理过程函数:LRESULT CALLBACK MainWndProc();文件装载函数:BOOL LoadBmpFile();注册窗口:BOOL RegisterClass()

    22、;创建窗口:CreateWindow();使窗口可见:ShowWindow();窗口更新:UpdateWindow();消息接收:GetMessage()消息翻译:TranslateMessage();消息调度:DispatchMessage();5.4 COM编程技术 COM(Component Object Model,组件对象模型)作为一个真正意义上的组件,应具备如下特征:实现了对开发语言的封装。以二进制形式发布。能够在不妨碍已有用户的情况下被升级。在网络上的位置必须能够被透明的重新分配。5.4.1 COM对象 COM是面向对象的软件模型,在COM中,对象是某类组件的一个实例 COM对象

    23、的应用者应用程序则称为客户 每个COM组件对象都拥有一个以上的接口,COM对象可通过一个或多个接口与客户进行交互 在COM模型中,由COM对象实现的每一个接口,都分别由一个128位的二进制全局统一标识符GUID(Globally Unique IDentifier)来标识。GUID是一个随机数,并不绝对保证唯一性,但发生标识符相重的可能性非常小。从理论上讲,如果一台机器每秒产生10 000 000个GUID,则可保证(概率意义上)3240年不重复。5.4.2 COM接口 下面是一个GUID的例子。54BF6567100711D1B0AA444553540000在C/C+中可以用这样的结构来描述

    24、:Typedef struct_GUID DWORD Data1;WORD Data2;WORD Data3;BYTE Data48;GUID于是前面的GUID例子可以定义为extern C const GUID CLSID_MYSPELLCHECKER=0 x54BF6567,0 x 1007,0 x 11D1,0 x B0,0 x AA,0 x 44,0 x 45,0 x 53,0 x54,0 x00,0 x00COM库提供的API函数可产生GUID:HRESULT CoCreateGuid(GUID*pguid);如果GUID创建成功,则函数返回S_OK,并且pguid将指向所得到的GU

    25、ID值。5.4.2 COM接口 1从从API到到COM接口接口图5.8 应用程序A和B通过API接口共用一个字典组件应用A或组件AAPI字典组件应用B或组件B平面型的API接口存在以下一些问题:当API函数非常多时,使用非常不方便,需要对函数进行组织。API函数需要标准化,按照统一的调用方式进行处理,以适应不同的语言编程实现 2COM接口的定义和标识图5.9 COM接口结构指针对象实现接口指针pvtablevtable指针函数1指针函数1指针函数13COM接口的内存模型 COM对象往往有自己的属性数据,这些属性数据反映了对象的状态,也正是通过这些属性数据,才反映了对象与对象的不同.4COM接口

    26、的特点 二进制特性 接口的不变性 继承性(扩展性)多态性运行过程中的多态性5.4.3 IUnknown接口 COM定义的每一个接口都必须从IUnknown继承过来,其原因在于IUnknown接口提供了两个非常重要的特性:生存期控制 接口查询 客户需要控制对象 如果继续对对象进行操作,则它必须保证对象能一直存在于内存中;如果操作已经完成,以后也不再需要该对象了,则它必须及时地把对象释放掉,以提高资源的利用率 首先来看一下IUnknown的定义(IDL):interface IUnknown HRESULT QueryInterface(inREFIID iid,out void*ppv);ULO

    27、NG AddRef(void);ULONG Release(void);QueryInterface用于查询COM对象的其他接口指针,AddRef和Release用于对引用计数进行操作 1引用计数 COM采用了采用了“引用计数引用计数”技术来解决内存技术来解决内存管理的问题,决定是否继续生存下去。管理的问题,决定是否继续生存下去。“引用计数引用计数”是一个数值,该数值的含义是一个数值,该数值的含义为有多少个有效指针在引用该为有多少个有效指针在引用该COM对象。对象。当客户得到了一个指向该对象的接口指针时,当客户得到了一个指向该对象的接口指针时,引用计数值增引用计数值增1;当客户用完了该接口指针后,引用计数减当客户用完了该接口指针后,引用计数减1。当引用计数减到当引用计数减到0时,时,COM对象就应该把自己对象就应该把自己从内存中清除掉。从内存中清除掉。2引用计数的实现 问题:在什么层次上进行引用计数呢?按照COM规范,一个COM组件可以实现多个COM对象,并且每个COM对象又可以支持多个COM接口,可以有以下三种方法:(1)组件引用计数 (2)对象引用计数 (3)接口引用计数,

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:接口软件技术课件.ppt
    链接地址:https://www.163wenku.com/p-3324921.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库