




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章 接口软件技术 本章的内容有:接口概述DOS和Windows下的接口调用方法COM编程技术5.1 接口概述5.1.1 接口的功能一般来说,由于CPU在与I/O设备进行数据交换时通常存在:速度不匹配,时序不匹配,信息格式不匹配信息类型不匹配接口软件(驱动软件)的功能1接口初始化2分析与检查功能调用3完成相关硬件的功能调用4异常情况的处理5.1.2 驱动软件的运行方式1无条件同步方式2异步查询方式3中断方式无条件同步方式可在任意时刻对硬件进行驱动,不必考虑硬件的接受能力这只有在硬件的执行速度很快,在任意时机都能响应驱动软件的驱动控制时才有可能。只在非常简单或速度非常高的系统中才可能存在。 异
2、步查询方式 驱动程序应该对外设硬件的状态进行查询,在适当的时机进行硬件功能的驱动或结果的取回。使用异步查询方式时,外设硬件必须能根据硬件的运行情况,将状态送给驱动程序,以供驱动程序查询。由于驱动程序必须在程序中反复判断外设的硬件状态,等待硬件确定工作状态的到来,因此程序的运行效率不高。 返回中断方式 驱动程序分为两个部分第一部分负责对外设硬件的启动驱动,完成之后,这部分驱动程序就退出运行,CPU转而执行其他的应用程序第二部分:中断服务程序。透明地窃取应用程序的极少量执行时间。中断运行方式是效率最高的调用方式,但要求硬件必须有产生中断源的能力,并且需要占用系统的一些软、硬件中断控制资源。5.1.
3、3 接口缓冲区1CPU中的通用寄存器适用于交互数据较少的情况,最快、最方便、最简单可靠的方式。2公用存储区公用存储区是由外设调用者和外设双方都可寻址的一块连续内存块,用于双方的数据交互。3堆栈堆栈是一种后进先出的数据结构。使用堆栈时,要特别注意栈中各个数据项的先后次序,以及堆栈指针的设置和恢复操作。5.1.4 接口软件及层次结构操作系统驱动软件硬件层应用软件图5.1接口软件的层次接口DOSBIOS硬件层应用软件应用环境驱动软件硬件层应用软件设备管理用户空间内核空间B) Windows的调用层次A)dos系统的调用层次图5.2 设备调用层次5.2 DOS系统下的接口调用DOS系统是单用户的操作系
4、统DOS系统提供给用户的编程界面大体有如下几种:裸机层软件开发,利用芯片或板卡(适配器)支持的寄存器或内存数据区编程。需要用户非常清楚设备的硬件细节,编程较复杂,但软件实现速度最快。BIOS级软件开发,利用BIOS基本输入输出系统所提供的一些服务功能编程。系统功能级软件开发,利用DOS系统提供的系统功能编程。5.2.1 BIOS功能级软件接口及实现1BIOS级软件接口概述 BIOS基本输入输出系统由一批子程序组成,负责管理系统内的输入输出设备直接为DOS操作系统和应用程序提供底层设备驱动服务。大多数的驱动程序以软件中断方式调用,少数由硬件中断调用。表5.1 常用BIOS服务功能BIOS服务功能
5、号功 能打印屏幕服务05H将当前视频页内容送到默认打印机视频服务10H为显示适配器提供I/O支持软盘服务13H提供软盘的读、写、格式化、初始化、诊断硬盘服务13H提供硬盘的读、写、格式化、初始化、诊断串行通信服务14H为串行适配器提供字符输入/输出系统服务15H系统级子服务键盘服务16H为键盘提供I/O支持并行打印机服务17H为并行打印机提供I/O支持 日期时间服务1AH设置和读取时间、日期、声源等2视频服务INT l0HAH寄存器选择视频服务功能 待写的字符或像素值一般在AL寄存器中传递。功能调用保存BX、CX、DX及段寄存器的值。其他寄存器的内容(特别是SI、DI)不保存 X坐标(列号)在
6、CX(图形功能)中或DL(正文功能)中传递 显示页在BH中传递,显示页从零开始计数 例如:利用BIOS视频服务的AH=0CH子功能实现写像素点。调用子程序之前,需要用DX保存行号,CX保存列号,AL保存颜色值,这是0CH子功能要求的。WRITINGPIXEL PROCNEARPUSHAX MOVAH,0CHINT10HPOPAXWRITINGPIXELENDP3键盘服务键盘ISR(键盘中断服务程序) INT 09H硬件中断、键盘DSR(键盘设备服务程序),INT 16H软件中断BIOS键盘服务包括3个子功能:0号功能、1号功能、2号功能 子功能号 含 义出 口 参 数AH=0从键盘输入一个字符
7、AL=ASCII码(或0)AH=扫描码(或扩展扫描码)AH=1判断键盘有无字符输ZF=0 有键按下,键代码保存在AX中ZF=1 无键按下AH=2当前键盘特殊键状态AL=KB-FLAG的变量4并行打印机服务INT 17H 0号功能(给打印机传送个字符)1号功能(初始化打印机)2号功能(读打印机状态)均可通过AH返回打印机状态字节 =1,不忙,打印机可用=1,打印机表示响应=1,打印机无纸=1,打印机选中=1,打印机出现超时错误未定义未定义=1,打印机出错D7 D6 D5 D4 D3 D2 D1 D05.2.2 DOS功能级软件接口及调用实例1DOS功能级软件接口调用概述主要包括:磁盘管理、内存管
8、理、基本输入输出管理等。 子功能都有一个00H57H的功能编号 INT 21H 00H0CH:字符I/O管理。包括键盘、显示器、打印机、异步通信口的管理0DH24H:文件管理。包括复位、选择磁盘,打开、关闭、删除文件,顺序读、写文件,建立文件,重命名文件,查找驱动器分配表信息,随机读、写文件,查看文件长度25H26H非设备系统调用。包括设置中断向量,建立新程序段27H29H文件管理。包括随机块读写、分析文件名2AH2EH非设备系统调用。包括读取、设置日期、时间2FH38H扩充的系统调用。包括读取DOS版本号,终止进程,读取中断矢量,读取磁盘空闲空间39H3BH目录组。包括建立子目录,修改当前目
9、录,删除目录项3CH46H:扩充的文件管理。包括建立、打开、关闭文件,从文件或设备读写数据,在指定路径删除、移动文件,修改文件属性,设备I/O控制,复制文件标志47H取当前目录组。48H4BH:扩充的内存管理。包括分配内存、释放已分配的内存、分配内存块、装入或执行程序等4CH4FH:扩充的系统调用。包括终止进程、查询子程序的返回代码、查找第一个相匹配的文件、查找下一个相匹配的文件50H53H:扩充的系统调用。供DOS内部使用54H57H:扩充的系统调用。包括读取校验状态、重新命名文件、设置读取日期及时间2基本I/O功能调用键盘输入(1号调用)无回显的键盘输入(8号调用)控制台输入输出(6号调用
10、)无回显的控制台输入(7号调用)打印输出(5号调用)输出字符串(9号调用)输入字符串(0AH调用)异步通信输入输出(3、4号调用)日期与时间的设置与获取(2AH、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硬件平台应用软
11、件虚拟DOS机硬件抽象层HAL多种硬件平台应用软件NT系统管理用户态内核态B) Windows NTA)Windows 9X图5.4 Windows的体系结构虚拟DOS机虚拟机管理层VMM设备驱动层内核Win32位子系统其它系统Win32位子系统5.3.2 Windows操作系统的内核进程1Windows 9X的内核进程系统工作在基于Intel 32位CPU的硬件平台上,运行在32全位地址空间的保护模式下。系统核心进程空间工作在CPU的最高特权级0,用户空间工作在 CPU的低特权级3。系统核心进程是由虚拟设备驱动层VXD和虚拟机管理层VMM构成的 VXDVXD目的:为硬件提供多任务的支持,增强
12、操作系统对于硬件设备的适应能力 VXD中的X是指某类设备 (鼠标的虚拟设备驱动程序称为VMD,通过VMD就可直接驱动鼠标;键盘的虚拟设备驱动程序称为VKD )VMM 位于虚拟设备驱动层VXD之上 用户通过调用Win32的接口API函数,就可以通过VMM获得系统内核及设备驱动的功能服务 2Windows NT的内核进程执行层I/O管理器(核心驱动程序)对象管理器安全引用监视进程管理器局部过程调用内存管理器CACHE管理器窗口管理器和图形设备接口图形设备驱动微核层硬件抽象层硬件抽象层微核层微核是一些被操作系统内核调用的微型软件模块微核的作用是为操作系统中所有低层次的通用功能提供支持,例如处理和发送
13、中断,消息同步,存储和恢复线程环境等,每个设备驱动程序内都调用了大量的微核操作来完成自己的功能 可执行层 在可执行层内,除了有系统管理服务的分发、内存分页管理等操作系统的内核重要模块外,还包括一些操作系统的主要部件 可执行层I/O管理器对象管理器安全引用监视器进程管理器局部过程凋用内存管理器和高速缓冲管理器Win32支持部件5.3.3 Windows NT的设备驱动调用1设备驱动的调用过程图5.6 Windows设备驱动程序调用I/O管理器低层驱动程序硬件平台应用软件I/O系统服务用户态内核态中间层驱动程序高层驱动程序内存管理进程管理Win 32子系统及其它管理器Win32位子系统IRP2设备
14、驱动程序的接口模型 为了规范和统一设备驱动程序的外观和行为,使用驱动程序的接口模型。在该模型中,每当I/O管理器要驱动程序执行一个功能时,它就以一套特定的调用参数输入输出请求包IRP,以这个模型中的某类功能接口的入口,调用这些指定的功能。 包括如下功能:DriveEnty 驱动程序入口 Dispatch entry point 分发入口ISR(Interrupt Service Routine) 中断服务程序入口DPC For ISR/Custom DPC 中断的延迟调用或定制延迟调用入口 DPC For ISR/Custom DPC 中断的延迟调用或定制延迟调用入口。Complete Req
15、uest完成例程入口。CancelReinitializeStartIoUnloadIoTimerAdapterControlTime Dpc3Windows的用户层进程用户环境层用户程序层 系统装入管理系统目录、文件目录、系统注册表磁盘外存储器程序模块应用程序模块请求模块查询装载定位模块装载 模块的动态装载4Windows的功能调用Windows系统中,对于用户提出的设备使用请求,是通过调用Win32子系统中的API函数实现的。Windows 9X与Windows NT中的Win32子系统并不相同,两个子系统是相互独立的 Windows NT中,Win32子环境有两类:一类位于用户态空间,用
16、户态API而另一类位于内核态空间,内核态API 5Windows的功能调用函数API的分类及特征API分类窗口管理类API图形设备接口类API系统服务类APIWindows的API函数担负着为所有的应用程序提供所有的服务功能。它们的主要特征是:支持多任务采用模块化的结构支持动态装载链接6API应用举例文件操作 建立文件函数CreatFile 文件打开操作函数HFILE_lopenHFILE_lopen(LPCSTR lpPathName,int iReadWrite) 文件建立操作函数HFILE_lcreat HFILE_lcreat(LPCSTR lpPathName,int iAttrib
17、ute) 移动文件的读写指针函数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,DWORD dwDesiredAccess,DWORD dwShare
18、Mode,LPSECURITY_ATTRIBUTES lpsecurityAttributes,DWORD dwCreationDisposition,DWORD dwFlagsAndAttributrs,HADEL hTemplateFile)BOOL ReadFile(HANDLE hFile,LPVOID ipBuffer,DWORD nNumberOfByteToRead, LPDWORD lpNumberOfBytesRead,LPOVERLAPPED lpOverlapped)BOOL WriteFile(HANDLE hFile,LPCVOID lpBuffer, DWORD n
19、NumderOfBytesToWrite,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 CloseHandle(HANDLE hObject)HFILE_lc
20、lose(HFILE hFile) 内存空间分配函数GlobalAllocHGLOBAL GlobalAlloc(Uint uFlags,DWORD dwBytes) 锁定一个全局内存对象函数GlobalLockLPVOID GlobalLock(HGLOBAL hMem)7.API应用举例窗口操作主程序函数:int PASCAL WinMain( );主窗口的消息处理过程函数:LRESULT CALLBACK MainWndProc( );文件装载函数:BOOL LoadBmpFile( );注册窗口:BOOL RegisterClass( ); 创建窗口: CreateWindow( );
21、使窗口可见:ShowWindow( );窗口更新:UpdateWindow( );消息接收:GetMessage( )消息翻译:TranslateMessage( );消息调度:DispatchMessage( );5.4 COM编程技术COM(Component Object Model,组件对象模型)作为一个真正意义上的组件,应具备如下特征:实现了对开发语言的封装。以二进制形式发布。能够在不妨碍已有用户的情况下被升级。在网络上的位置必须能够被透明的重新分配。 5.4.1 COM对象COM是面向对象的软件模型,在COM中,对象是某类组件的一个实例COM对象的应用者应用程序则称为客户每个COM
22、组件对象都拥有一个以上的接口,COM对象可通过一个或多个接口与客户进行交互在COM模型中,由COM对象实现的每一个接口,都分别由一个128位的二进制全局统一标识符GUID(Globally Unique IDentifier)来标识。GUID是一个随机数,并不绝对保证唯一性,但发生标识符相重的可能性非常小。从理论上讲,如果一台机器每秒产生10 000 000个GUID,则可保证(概率意义上)3240年不重复。 5.4.2 COM接口 下面是一个GUID的例子。54BF6567-1007-11D1-B0AA-444553540000在C/C+中可以用这样的结构来描述: Typedef struc
23、t_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将指向所得到的GUID值。5.4.2 COM接口 1从API到COM接口图5.8 应用程序A和B通过API接口共用一个字典组件应用A或组件AAPI字典组件应用B或组件B平面型的API接口存在以下一些问题: 当API函数非常多时,使用非常不方便,需要对函数进行组织。 API函数需要标准化,按照统一的调用方式进行处理,以适应不同的语言编程实现 2COM接口的定义和标识图5.9 CO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新疆维吾尔哈密地区巴里坤哈萨克自治县2025届五下数学期末考试模拟试题含答案
- 2025-2030家私行业市场深度分析及供需形势与投资价值研究报告
- 新疆职业大学《数据挖掘与统计应用》2023-2024学年第二学期期末试卷
- 邢台市新河县2024-2025学年三下数学期末学业质量监测模拟试题含解析
- 2025至2031年中国秸秆气化机行业投资前景及策略咨询研究报告
- 2025-2030年中国CNG缠绕瓶行业市场投资商机与风险评估报告
- 2025-2030宠物玩具行业竞争格局及“”企业投资战略研究报告
- 2024-2025企业安全培训考试试题附完整答案(考点梳理)
- 2025年职工安全培训考试试题带解析答案
- 2025工厂职工安全培训考试试题【夺冠】
- 【人卫九版内分泌科】第十一章-甲状腺功能减退症课件
- “当代文化参与”学习任务群相关单元的设计思路与教学建议课件(共51张PPT)
- 提高卧床患者踝泵运动的执行率品管圈汇报书模板课件
- 同理心的应用教学教材课件
- DB4102-T 025-2021海绵城市建设施工与质量验收规范-(高清现行)
- 城市轨道交通安全管理隐患清单
- 锡膏使用记录表
- 儿童保健学课件:绪论
- 中小学校园安全稳定工作岗位责任清单
- 校园安全存在问题及对策
- NY∕T 309-1996 全国耕地类型区、耕地地力等级划分
评论
0/150
提交评论