资源描述:
《实验一获取磁盘基本信息.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、学生姓名:张鹏学号:实验地点:数计学院407实验室实验课时:3学时实验器材:计算机课程名称:计算机操作系统实验名称:5.1实验一:获取磁盘基本信息一、实验目的1)了解磁盘的物理组织。2)熟悉Windows系统如何查看磁盘相关信息。3)掌握Windows系统提供的有关对磁盘操作API。二、实验环境及工具Windows7操作系统,VC6三、实验内容编写一个函数根据给出的驱动器号读取磁盘基本信息,包括磁盘的大小、该磁盘包括多少个扇区,该磁盘有多少个柱面、每个磁盘的磁道数、每个磁道的扇区数、每个扇区包含的字节数。四、实验步骤//zhang.cpp:Definestheentrypointfor
2、theconsoleapplication.#include"stdafx.h"#include"zhang.h"#include"winioctl.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endifDISK_GEOMETRYdisk_info;HANDLEGetDiskInformation(chardrivername);//////////////////////////////////////////////Theoneandonlyapplicationob
3、jectCWinApptheApp;usingnamespacestd;int_tmain(intargc,TCHAR*argv[],TCHAR*envp[]){intnRetCode=0;HANDLEHandle;Handle=GetDiskInformation('C');return(nRetCode);}HANDLEGetDiskInformation(chardrivername){chardevice[]="\\.\C:";device[4]=drivername;HANDLEFloopyDisk;DWORDReturnSize;DWORDSector;doubleD
4、iskSize;FloopyDisk=CreateFile(device,GENERIC_READ
5、GENERIC_WRITE,FILE_SHARE_READ
6、FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_FLAG_RANDOM_ACCESS
7、FILE_FLAG_NO_BUFFERING,NULL);if(FloopyDisk==INVALID_HANDLE_VALUE)printf("INVALID_HANDLE_VALUE!");if(GetLastError()==ERROR_ALREADY_EXISTS)printf("CannotOpe
8、nDisk!%d",GetLastError());if(!DeviceIoControl(FloopyDisk,IOCTL_DISK_GET_DRIVE_GEOMETRY,NULL,0,&disk_info,50,&ReturnSize,(LPOVERLAPPED)NULL))printf("OpenDiskError!%d",GetLastError());printf("DiskInformation:");printf("tBytesPerSector:%d",disk_info.BytesPerSector);printf("tSectorPerTrack
9、:%d",disk_info.SectorsPerTrack);printf("tTracksPerCylinder:%d",disk_info.TracksPerCylinder);printf("tCylinder:%d",disk_info.Cylinders);Sector=disk_info.Cylinders.QuadPart*disk_info.TracksPerCylinder*disk_info.SectorsPerTrack;printf("tThereis%dSectors!",Sector);DiskSize=Sector*disk_inf
10、o.BytesPerSector;printf("tSizeofDisk:%4.2fKB",(DiskSize)/(1024*1024));returnFloopyDisk;}三、实验结论通过实验,我初步了解了操作系统中获取磁盘信息程序代码的基本结构和需要注意的一些细节。