




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 操作系统及程序设计 设备管理文件管理用户接口西安交通大学计算机教学实验中心http:/软件开发技术基础2本节内容设备管理程序设计文件管理程序设计人机接口管理程序设计 3什么是外部设备作为计算机系统与外界交互的工具,负责计算机与外部的输入输出工作,称这类设备为外部设备简称为外设3.4 设备管理设备管理的功能是根据设备分配原则对设备进行分配控制输入输出设备和CPU之间进行数据交换使设备与主机能够并行工作为用户提供良好的设备使用界面提高设备之间、设备与CPU之间、进程之间的并行性,从而提高整个操作系统的效率缓冲区管理、释放设备 43.4.1 设备管理1. 设备的分类按使用方式可分为独占设备和
2、共享设备;按处理速度可分为慢速设备和快速设备;按数据组织和存取方式可分为字符设备和块设备;按通信方式可分为串行设备和并行设备;按应用范围可分为通用设备和专用设备;按隶属关系可分为系统设备和用户设备;按实体程序可分为真实设备和虚拟设备等等562.设备的I/O控制方式(1)程序直接控制方式(2)中断控制方式(3)DMA方式(4)通道方式7缓冲技术缓冲区是一种交换数据的区域。 缓冲技术的分类单缓冲技术双缓冲多缓冲缓冲池3. 设备管理的方式进程首先要向设备管理程序提出申请,然后由设备管理程序按照一定的分配算法给进程分配必要的资源。如果进程的申请没有成功,就要在资源的等待队列中排队等待,直到获得所需的资
3、源。89设备分配的原则设备的固有属性设备分配算法设备分配中的安全性与设备无关性:10Windows操作系统通过设备驱动程序来完成设备的启动、操作、数据流向控制和设备的关闭工作的4. 设备分配的步骤分配设备分配控制器分配通道115.设备驱动程序设备驱动程序的作用下实现真正的I/O操作126. DOS的设备管理MS-DOS中的设备分为块设备和字符块设备。其中,块设备是以“块”为单位进行数据传输,磁盘是典型的块设备;字符设备是以“字符”为单位进行数据传输,典型的字符设备有键盘、针式打印机和显示器等137. Windows的设备管理Windows操作系统是通过设备驱动程序来完成设备的启动、操作、数据流
4、向控制和设备的关闭工作。Windows设备驱动程序由一组处理I/O请求的不同阶段的例程组成,包括:初始化例程、调度例程集、启动I/O例程、中断服务例程和中断服务延迟过程调用例程等。143.4.2 设备管理程序设计Windows MCIMCI(Media Control Interface,媒体控制接口)向Windows程序提供了在高层次上控制媒体设备接口的能力。程序员不必关心具体设备,就可以对激光唱机(CD)、视盘机、波形音频设备、视频播放设备和MIDI设备等媒体设备进行控制。MCI提供两种编程接口:命令字符串命令消息1516命令字符串命令字符串接口MCI可以通过mciSendString函数
5、向设备发送MCIERROR mciSendString(LPCTSTR lpszCommand, / 命令字符串指针LPTSTR lpszReturnString, / 返回值指针UINT cchReturn, /返回值所占字节数HANDLE hWndCallback /回调窗口句柄,一般为NULL) /若成功则返回017使用MCI头文件windows.hmmsystem.h在连接程序时要用到winmm.lib引入库或者在源程序中加入下面一行: #pragma comment(lib, winmm.lib)18mciSendString使用#include#include#include#pr
6、agma comment(lib, winmm.lib)/主程序void main(void) int a; DWORD dwErrorCode; char buf100; dwErrorCode=mciSendString(open d:rose2.wav type waveaudio alias dillo, buf, strlen(buf), NULL);dwErrorCode=mciSendString(play dillo wait ,NULL,0,0); /from 0 to 100毫秒cina;19mciSendString使用2#include#include#include#
7、pragma comment(lib, winmm.lib)/主程序void main(void) int a; DWORD dwErrorCode; char buf50;mciSendString(open d:dillo.avi type avivideo alias dillo, buf, strlen(buf), NULL);mciSendString(play dillo repeat, buf, strlen(buf), NULL); /重复播放cina;20Open命令的格式open device_name type device_type alias device_alias
8、 device_name 要使用的设备名,通常是文件名。 type device_type设备类型,例如waveaudio或sequencer,可省略。 alias device_alias设备别名,指定后可在其他命令中代替设备名。21Play命令的格式play device_alias from pos1 to pos2 wait repeat 若省略from则从当前磁道开始播放,若省略to则播放到结束。 若指明wait则等到播放完毕命令才返回。 若指明repeat则会不停的重复播放。 若同时指明wait和repeat则命令不会返回,本线程产生堵塞,通常会引起程序失去响应。22Open设备类
9、型open是MCI打开设备的命令,MCI的设备类型如下: animation动画设备 cdaudioCD播放器 dat数字音频磁带机 digitalvideo 某一窗口中的数字视频(不基于GDI) other未定义的MCI设备 overlay重叠设备(窗口中的模拟视频) scanner图象扫描仪 sequencerMIDI序列器 videodisc视盘机 waveaudio播放数字波形文件的音频设备23命令消息接口命令消息接口应用消息传递方式与MCI设备通信。使用的函数为mciSendCommand24mciSendCommand/在打开设备时不用该参数25MCI_PLAY_PARMS参数结构
10、26CI消息一般包括四部分设备标示符,打开设备时不用消息值标明命令选择项的一组标志命令附加参数的结构体27MCI的命令消息128MCI的命令消息229【例3-8】光驱管理程序。 使用“mmsystem.h”文件中描述的媒体控制接口(MCI) API函数mciSendCommand,MCI_OPEN_PARMS 为光驱打开参数结构体,MCI_STATUS_PARMS为光驱状态参数结构体,ZeroMemory函数给光驱打开参数变量op赋零值光驱类型参数设为CD_AUDIO,使用mciSendCommand函数首先发送设备打开命令,根据用户选择分别打开光驱和关闭光驱,最后释放设备存取 USE MFC
11、30#include #include #include /MCI API函数头文件#pragma comment(lib,winmm)31int main()MCI_OPEN_PARMS op;/光驱打开参数结构DWORD flags;ZeroMemory(&op, sizeof(MCI_OPEN_PARMS);/光驱参数赋值为0op.lpstrDeviceType = (LPCSTR) MCI_DEVTYPE_CD_AUDIO;/光驱类型参数为CD_AUDIOop.lpstrElementName =F:;flags= MCI_OPEN_TYPE| MCI_OPEN_TYPE_ID | M
12、CI_OPEN_ELEMENT |MCI_OPEN_SHAREABLE; mciSendCommand(0,MCI_OPEN,flags,(unsigned long)&op); /发送设备打开命令mciSendCommand(op.wDeviceID,MCI_SET,MCI_SET_DOOR_OPEN,0);/打开光驱return 0;32MCI_OPEN的消息标志 MCI_OPEN_TYPE 对应 MCI_OPEN_PARMS结构中的 LPCSTR lpstrDeviceType 成员变量,设备类型的名字或常量标识。 MCI_OPEN_TYPE_ID 和 MCI_OPEN_TYPE fla
13、g 一起使用,可以在 MCI_OPEN_PARMS结构中的 lpstrDeviceType 成员变量的低字中得到标准的MCI 设备的类型ID,同时在高字中指出该设备ID 此时在系统里的顺序索引号。MCI_OPEN_ELEMENT 对应 MCI_OPEN_PARMS结构中的 LPCSTR lpstrElementName 成员变量,设备元素 (通常是打开的文件全路径). MCI_OPEN_SHAREABLE 将设备或文件以共享的方式打开。333.4.2 文件管理与程序设计计算机中的文件是指一组相关信息的集合。文件具有一定的数据结构、分类属性和访问权限。文件从物理上由位(bit)、字节(byte)
14、、块(block)、页(page)和盘(disk)等组成;从逻辑上由字(word)、字段(segment)、记录(record)、虚拟块(virtual block)、文件(file)、文件目录(file directory)、文件夹(folder)和文件卷(volume)等组成。【例3-9】双缓冲显示图形程序文档/视图框架程序 OnDraw 函数CDC CBitmap3435 3.5 文件管理应用程序设计文件具有符号名的一组相关信息项的集合36文件类型常用文件类型.exe 可执行文件,.lib静态库文件,.dll动态库文件,.ocx 组件文件,.cpp C+源程序文件,.java Java源
15、程序文件,.html 网页文件,.wav声音文件,.jpg 图片文件,.doc Word文件,.mdb Access数据库文件,.ini初始化文件,.log日志文件,.chk磁盘整理文件 3.5.1文件管理操作系统中与文件管理有关的程序和所管理的文件称为文件系统371.功能(1) 分配文件的存储空间。(2) 实现从逻辑文件到物理文件间的转换,即“按名存取”外存上的文件。(3) 建立文件目录。提供按名存取的有效手段和保证文件安全的机构。(4) 提供合理的存取方法以适应各种不同应用。(5) 实现文件的共享、保护和保密。不同用户能在系统的控制下共享其它用户的文件。(6) 提供一组文件操作,完成对文件
16、的建立、删除、更名、复制、移动、打开、读、写和关闭等操作。382.文件结构文件的结构可分为逻辑结构和物理结构两种逻辑结构是指文件的外部组织形式,即从用户角度看到的文件组织形式,用户以这种形式存取、检索和加工有关信息。它还可分为流式文件和记录式文件物理结构又称存储结构,它是指文件在外存上的存储组织形式,与存储介质的存储特性有关393.文件目录文件存入文件存储空间后,用户要实现“按名存取”,必须建立文件名与该文件在外存空间中的物理地址之间的对应关系体现这种对应关系的数据结构称为文件目录文件目录中应包括:文件的符号名、文件的物理地址和文件属性。40414.Windows的文件系统 普通文件有系统文件
17、和库文件等,而文件夹(目录)和设备是一种特殊的文件 文件的保护可以通过改变文件的属性为可读、可写、可执行、隐藏和归挡来进行。Windows操作系统采用FAT32和NTFS两种文件系统格式,FAT32采用文件目录表FDT和文件分配表FAT相结合的方式来管理文件。NTFS采用压缩存储方式,具有文件权限的管理功能,能够更好地管理文件。 3.5.2文件管理程序设计使用Windows API和Visual C+的MFC中有关文件系统的函数和类,可以管理磁盘上的文件和目录。用到的主要函数和类有:GetLogicalDrives函数取得逻辑盘,GetDriveType函数判断盘的类型,CFileFind类对
18、文件或目录进行查找,CFile类读写文件的内容。也可以使用标准C语言的fopen、fread、fwrite和fclose等函数来进行文件的操作。4243 例3-10 编写程序,浏览磁盘驱动器使用MFC和API函数GetLogicalDrives取得“我的电脑”中的所有盘,并得到一个DWORD类型的数。dwDriveList = GetLogicalDrives () 通过提取和判断dwDriveList的每一位,得到所有盘符。GetDriveType判别每一盘符的类型。 UINT GetDriveType(int nDrive)。44用到的其他函数CString代表一个字符串对象,SetAt
19、函数改变字符串某个位置的字符,GetLength函数取得字符的长度,GetBuffer函数将一个CString类型的字符串转换为LPTSTR类型的指定长度的字符串,后者可以使用cout输出 45例3-11 编程判别指定文件或文件夹的的属性从命令行输入指定文件或目录名称,可以包含通配符(*和?);使用MFC的 CFileFind类的FindFile函数对指定文件进行查找; CFileFind finder; BOOL bWorking = finder.FindFile(argv1); /取得命令行参数指定的文件名46CFileFind类的FindNextFile函数对指定文件继续进行查找,bW
20、orking = finder.FindNextFile() 通过函数GetFileName、GetFilePath、IsDirectory、IsReadOnly 和GetCreationTime得到文件的名称、路径、是否目录、是否只读和建立时间等,并显示相应结果。47另一种查找文件的方法#include#includevoid main()BOOL flag=0;HANDLE hfile=NULL;WIN32_FIND_DATA lpFindFileData;hfile=FindFirstFile (*.cpp,&lpFindFileData);if(hfile)flag=1;while(f
21、lag)coutlpFindFileData.cFileNameendl;flag=FindNextFile (hfile,&lpFindFileData);例3-12编写读取MP3文件基本信息的程序MP3文件是由帧(frame)构成的,帧是MP3 文件最小的组成单位。整个MP3 文件结构包括三部分:TAG_V2(ID3V2)、Frame和TAG_V1(ID3V1)。其中,Frame为一系列的帧,个数由文件大小和帧长决定,每个frame又分为帧头和数据实体两部分。帧头记录了MP3的位率、采样率和版本等信息;ID3V2 位于文件头部,包含了作者、作曲、专辑等信息,长度不固定,是对ID3V1的扩展48ID3V1位于文件尾部,长度为128字节,也包含作者、作曲、和专辑等信息。ID3V1的结构如下:typedef struct tagID3V1char Header3; /标签头必须是TAG否则认为没有标签char Title30; /标题char author30; /作者char disc_name30; /专集名称char Year4; /发行年份char Remark28; /备注char reserve; /保留char track; /音轨char Genre; /类型ID3V1,*pID3V1;本例
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 时间的脚印课件王晶
- 教务主任期中质量分析
- 护理常规培训内容
- 时钟造型基础知识培训课件
- 二零二五版房屋地基下沉修复赔偿合同
- 2025版出轨离婚赔偿金协议书(含法律咨询与执行)
- 二零二五年度房地产开发项目贷款合同范本正规范本
- 旭东化学课件获取
- 二零二五年度动产抵押消费贷款合同编写指南
- 高三试卷:四川省雅安市2024-2025学年高三上学期11月零诊试题数学答案
- 医院感染管理培训课件:妇产科感染的防治措施
- 农村伪劣食品总结汇报
- 人体解剖学与组织胚胎学(高职)全套教学课件
- 展会现场管理方案
- 二年级上册语文教材解读-
- 舟山沈家门渔港案例详解
- 宫颈癌护理教学查房
- 浅谈欧派系列产品营销策略
- 2012年数学建模D题机器人避障问题论文
- 学校文印室及时服务方案
- 消防喷淋设施暂停申请书
评论
0/150
提交评论