- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
最近下载
- [电信行业]移动通信技术移动信道中的电波传播及干扰.pptx VIP
- (课堂教学课件4)七颗钻石.ppt VIP
- Unit 1 长难句分析讲义--高中英语人教版(2019)选择性必修第一册.docx VIP
- 高等教育心理学知识点-.docx VIP
- 2025及以后5年中国碳纤维行业市场运营格局及前景战略分析报告.docx
- 常见微生物与相关疾病.ppt VIP
- 人民医院皮肤性病科临床技术操作规范2023版.pdf VIP
- 三年级下册语文课件-第18课 七颗钻石第一课时|人教新课标 (共20张PPT).pptx VIP
- 2023年绵阳中学自主招生数学试题.doc VIP
- 二下数学混合运算看图列综合算式专项题型练习(含答案12页).pdf VIP
文档评论(0)