操作系统实验(六)-读写磁盘.doc

操作系统实验(六)-读写磁盘.doc

ID:57420575

大小:237.00 KB

页数:9页

时间:2020-08-16

操作系统实验(六)-读写磁盘.doc_第1页
操作系统实验(六)-读写磁盘.doc_第2页
操作系统实验(六)-读写磁盘.doc_第3页
操作系统实验(六)-读写磁盘.doc_第4页
操作系统实验(六)-读写磁盘.doc_第5页
资源描述:

《操作系统实验(六)-读写磁盘.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验六读/写磁盘指定位置信息实验目的:1)了解磁盘的物理组织。2)掌握windows系统提供的有关对磁盘操作API。3)根据输入的扇区号读/写指定扇区。实验准备知识:1)设置读写操作的位置:函数SetFilepointer()用于移动一个打开文件中的读/写指针,这里磁盘设备被当作文件处理,因此用于移动文件读/写指针在磁盘上的位置。2)读文件:用函数ReadFile()读取磁盘指定区域的内容(从文件指针指示的位置开始读取文件中的数据)。3)写文件:用函数WriteFile()将数据写入磁盘指定区域。函数在文件指针所指的

2、位置完成写操作,写操作完成后,文件指针按实际写入的字节数来调整。实验内容:在实验五的基础上,继续完成该试验。编写两个函数,分别完成如下功能。1)对给定的扇区号读取该扇区的内容。2)将用户输入的数据写入指定的扇区。实验要求:深入理解操作系统设备当作文件处理的特性,理解函数SetFilepointer()、ReadFile()及WriteFile()中每个参数的实际意义并能在本实验中正确应用。实验指导:在主程序中让用户选择:R、W、Q或,若用户选择R,则调用函数BOOLSectorRead(HANDLEHandle),完

3、成读给指定扇区的功能;若用户选择W,则调用函数BOOLSectorWrite(HANDLEHandle),完成对给定扇区号写入信息的功能,若用户选择Q,则程序退出。参考源代码://操作系统实验六.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include"操作系统实验六.h"#include"winioctl.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcha

4、rTHIS__FILE[]=__FILE__;#endifDISK_GEOMETRYdisk_info;HANDLEGetDiskInformation(chardrivername);BOOLSectorRead(HANDLEHandle);BOOLSectorWrite(HANDLEHandle);///////////////////////////////////////////////////////TheoneandonlyapplicationobjectCWinApptheApp;usingnames

5、pacestd;int_tmain(intargc,TCHAR*argv[],TCHAR*envp[]){intnRetCode=0;HANDLEHandle;charChoice;Handle=GetDiskInformation('C');while(TRUE){printf("PleaseSelectReadorWrite!Input'R'roread,'W'toWrite,'Q'toquit!");Choice=getchar();printf("");switch(Choice){case'W':{

6、if(!SectorWrite(Handle))printf("WriteSectorFail!");getchar();break;}case'R':{if(!SectorRead(Handle))printf("ReadSectorFail!");getchar();break;}case'Q':{exit(0);break;}default:{printf("InputError!,Tryagainplease!");getchar();}}}returnnRetCode;}HANDLEGetDis

7、kInformation(chardrivername)//GetDiskInformation获取磁盘信息{chardevice[]="\\.\";device[4]=drivername;HANDLEFloopyDisk;DWORDReturnSize;//DWORD双字节值DWORDSector;doubleDiskSize;FloopyDisk=CreateFile(device,GENERIC_READ

8、GENERIC_WRITE,FILE_SHARE_READ

9、FILE_SHARE_WRITE,NU

10、LL,OPEN_EXISTING,FILE_FLAG_RANDOM_ACCESS

11、FILE_FLAG_NO_BUFFERING,NULL);if(FloopyDisk==INVALID_HANDLE_VALUE)printf("INVALID_HANDLE_VALUE!");if(GetLastError()==ERROR_ALREADY_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。