操作系统实验(五)获取磁盘基本信息.doc

操作系统实验(五)获取磁盘基本信息.doc

ID:58657005

大小:116.00 KB

页数:5页

时间:2020-10-16

操作系统实验(五)获取磁盘基本信息.doc_第1页
操作系统实验(五)获取磁盘基本信息.doc_第2页
操作系统实验(五)获取磁盘基本信息.doc_第3页
操作系统实验(五)获取磁盘基本信息.doc_第4页
操作系统实验(五)获取磁盘基本信息.doc_第5页
资源描述:

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

1、获取磁盘基本信息姓名:蒙吉学号:实验名称:获取磁盘基本信息实验目的:1)了解磁盘的物理组织。2)熟悉WINDOWS系统如何查看磁盘相关信息。3)掌握Windows系统提供的有关对磁盘操作API。实验准备知识:1)磁盘基本物理结构说明:Cylinder:磁盘的柱面数;TracksPerCylinder:每个柱面的磁道数;BytesPerSector:每个扇区的字节数;MediaType:介质类型,如3.5英寸,1.44MB软盘;SectorsPerTrack:每个磁道的扇区数。2)相关函数:文件创建函数CreateFile();

2、获取磁盘的基本信息函数DeviceIoControl().实验内容:编写一个函数根据给出的驱动器号读取磁盘基本信息,包括磁盘的大小、该磁盘包括多少个扇区,该磁盘有多少个柱面、每个磁盘的磁道数、每个磁道的扇区数、每个扇区包含的字节数。实验要求:了解MSDNLibraryVisualStudio6.0中提供的磁盘主要数据结构DISK_GEOMETRY中每个成员的含义,深入理解操作系统将设备当作文件处理的特性,理解函数GreateFile()及DeviceloCotrol()中每个参数的实际意义并能在本实验中正确使用。参考源代码:/

3、/Diskformation_Get.cpp:Definestheentrypointfortheconsoleapplication.#include"stdafx.h"#include"winioctl.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endifDISK_GEOMETRYdisk_info;HANDLEGetDiskInformation(chardrivername);/////////////

4、/////////////////////////////////TheoneandonlyapplicationobjectCWinApptheApp;usingnamespacestd;int_tmain(intargc,TCHAR*argv[],TCHAR*envp[]){intnRetCode=0;HANDLEHandle;Handle=GetDiskInformation('A');return(nRetCode);}HANDLEGetDiskInformation(chardrivername){chardevic

5、e[]="\\.\:";device[4]=drivername;HANDLEFloopyDisk;DWORDReturnSize;DWORDSector;doubleDiskSize;FloopyDisk=CreateFile(device,GENERIC_READ

6、GENERIC_WRITE,FILE_SHARE_READ

7、FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_FLAG_RANDOM_ACCESS

8、FILE_FLAG_NO_BUFFERING,NULL);if(Floopy

9、Disk==INVALID_HANDLE_VALUE)printf("INVALID_HANDLE_VALUE!");if(GetLastError()==ERROR_ALREADY_EXISTS)printf("CannotOpenDisk!%d",GetLastError());if(!DeviceIoControl(FloopyDisk,IOCTL_DISK_GET_DRIVE_GEOMETRY,NULL,0,&disk_info,50,&ReturnSize,(LPOVERLAPPED)NULL))printf

10、("OpenDiskError!%d",GetLastError());printf("DiskInformation:");printf("tBytesPerSector:%d",disk_info.BytesPerSector);printf("tSectorPerTrack:%d",disk_info.SectorsPerTrack);printf("tTracksPerCylinder:%d",disk_info.TracksPerCylinder);printf("tCylinder:%d

11、",disk_info.Cylinders);Sector=disk_info.Cylinders.QuadPart*disk_info.TracksPerCylinder*disk_info.SectorsPerTrack;printf("tThereis%dSect

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

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

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