操作系统实验 读写磁盘.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
- - PAGE 1 - 实验六 读/写磁盘指定位置信息实验目的:1)了解磁盘的物理组织。 掌握 windows 系统提供的有关对磁盘操作 API。 根据输入的扇区号读/写指定扇区。实验准备知识: 设置读写操作的位置: 函数 SetFilepointer()用于移动一个打开文件中的读/写指针,这里磁盘设备被当作文件处理,因此用于移动文件读/写指针在磁盘上的位置。 读文件: 用函数 ReadFile()读取磁盘指定区域的内容(从文件指针指示的位置开始读取文件中的数据)。 写文件: 用函数 Write File()将数据写入磁盘指定区域。函数在文件指针所指的位置完成写操作, 写操作完成后,文件指针按实际写入的字节数来调整。 实验内容: 在实验五的基础上,继续完成该试验。编写两个函数,分别完成如下功能。 对给定的扇区号读取该扇区的内容。 将用户输入的数据写入指定的扇区。实验要求: 深入理解操作系统设备当作文件处理的特性,理解函数 SetFilepointer()、ReadFile()及Write File()中每个参数的实际意义并能在本实验中正确应用。 实验指导: 在主程序中让用户选择: R、W、Q 或,若用户选择 R,则调用函数 BOOL SectorRead (HANDLEHandle),完成读给指定扇区的功能;若用户选择 W ,则调用函数 BOOL SectorWrite(HANDLEHandle),完成对给定扇区号写入信息的功能,若用户选择 Q,则程序退出。 参考源代码: // 操作系统实验六.cpp : Defines the entry point for the console application. // #include stdafx.h #include 操作系统实验六.h #include winioctl.h #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS FILE[]= FILE ; #endif DISK_GEOMETRY disk_info; HANDLE GetDiskInformation(char drivername); BOOL SectorRead(HANDLE Handle); BOOL SectorWrite(HANDLE Handle); ///////////////////////////////////////////////////// //The one and only application object CWinApp theApp; using namespace std; int _tmain(int argc,TCHAR* argv[],TCHAR* envp[]) { int nRetCode=0; HANDLE Handle; char Choice; Handle=GetDiskInformation(C); while(TRUE) { printf(Please Select Read or Write!Input R ro read,W to Write,Q to quit!\n); Choice=getchar(); printf(\n); switch(Choice) { case W: { } case R: { } case Q: {  if(!SectorWrite(Handle)) printf(Write Sector Fail!\n); getchar(); break; if(!SectorRead(Handle)) printf(Read Sector Fail!\n); getchar(); break; } default: { exit(0); break; printf(Input Error!,Try again please!\n); getchar(); } } } return nRetCode; } HANDLE GetDiskInformation(char drivername) // GetDiskInformation 获取磁盘信息 { char device[]=\\\\.\\; device[4]=drivername; HANDLE FloopyDisk; DWORD ReturnSize;// DWORD 双字节值 DWORD Sector; double DiskSize; FloopyDisk=CreateFile(device, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXI

文档评论(0)

dqy118 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体上海海滋实业有限公司
IP属地湖北
统一社会信用代码/组织机构代码
91310115MA7DL1JF2N

1亿VIP精品文档

相关文档