作業系統實驗十 獲取磁碟基本資訊

2021-10-08 18:57:32 字數 2695 閱讀 3741

(1) 了解磁碟的物理組織。

(2) 熟悉windows 系統如何檢視磁碟相關係數。

(3) 掌握windows 系統提供的有關對磁碟操作 api。

磁碟基本物理結構原型:

typedef struct_dtsk_geometry  disk_geometry;
1.檔案建立:

函式createfile() 用於開啟磁碟驅動器並返回乙個檔案控制代碼,這裡驅動器被當做檔案來處理。

原型:

handle createfile(

lpctste lpfilename, //指向檔名的指標

dword dwdesiredaccess, //讀/寫訪問模式

dword dwsharemode, //共享模式

lpsecurity_attributes lpsecurityattributes, //指向安全屬性的指標

dword dwcreateionadisposition, //檔案存在標誌

dword dwflagsandattributes, //檔案屬性

handle htemplatefile //指向訪問模板檔案的控制代碼

);

2.獲取磁碟的基本資訊:

函式deviceiocontrol() 用於獲取磁碟的基本資訊

原型:

bool deviceiocontrol(

handle hdevice, //裝置控制代碼,由createfile() 函式獲得

dword dwiocontrolcode, //操作控制**

lpvoid lpinbuffer, //輸入資料緩衝區

dword ninbuffersize, //輸入資料緩衝區大小

lpvoid lpoutbuffer, //輸出資料緩衝區

dword noutbuffersize, //輸出資料緩衝區大小

lpdword lpbytesreturned, //可獲取的位元組計數

);

​ 表 1 dwiocontrolcode 的值值描述

ioctl_disk_get_drive_geometry

得到磁碟物理結構資訊

ioctl_disk_get_partition_info

得到磁碟分割槽資訊

fsctl_query_fat_bpb

返回fat16或fat12卷的前36位元組

fsctl_get_compression

獲取檔案或目錄的壓縮資訊

返回值:

如果函式呼叫成功,則返回值為非0值。如果函式呼叫失敗,則返回值為0。若要得到更多的錯誤資訊,可呼叫函式getlasterror()。

編寫乙個函式,根據給出的驅動器號讀取磁碟基本資訊,包括鍵盤的大小、該磁碟包括多少個扇區,該磁碟有多少個柱面,每個柱面的磁軌數、每個磁軌的扇區數、每個扇區包含的位元組數。

//#include

"stdafx.h"

#include

"disk_information.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);/

using

namespace std;

int_tmain

(int argc, tchar* ar**[

], tchar* envp)

handle getdiskinformation

(char drivername)

執行結果:

disk information:

bytespersector:512

sectorpertrack:63

trackpercylinder:255

cylinder: 62260

there is 1000206900 sectors!

size of disk: 958.28mb

總結:

1.在**實現過程中,handle=getdiskinformation(『c』);

由於我的電腦只有乙個c盤,沒有其他盤,所以這裡只能檢視c盤,其他則會報錯。

2.從實驗結果可以看出,對給定的磁碟驅動器中的c,本實驗能正確識別出它每個扇區有512位元組,每個磁軌有63個扇區,每個柱面有255個磁軌,共有62260個柱面,該盤共有1000206900個磁軌,磁碟的大小是958.28mb。

3.應當注意,磁軌上有一部分空間是儲存磁碟的物理資訊的,這部分空間系統是不能夠直接訪問的,因此沒有編入邏輯扇區,也就是說邏輯扇區比磁碟的實際扇區要小,因此計算出的磁碟大小是磁碟可用空間的大小,比磁碟的物理大小要小。

作業系統實驗十 獲取磁碟基本資訊

1 了解磁碟的物理組織。2 熟悉windows 系統如何檢視磁碟相關係數。3 掌握windows 系統提供的有關對磁碟操作 api。1.相關係數資料結構說明 磁碟基本物理結構原型 typedef struct dtsk geometry disk geometry 成員說明 1 cylinders ...

作業系統實驗 獲取磁碟基本資訊

1 了解磁碟的物理組織。2 熟悉windows 系統如何檢視磁碟相關係數。3 掌握windows 系統提供的有關對磁碟操作 api。1.相關係數資料結構說明 磁碟基本物理結構原型 typedef struct disk geometry disk geometry 成員說明 1 cylinders ...

實驗十 獲取磁碟基本資訊

1 了解磁碟的物理組織。2 熟悉windows 系統如何檢視磁碟相關係數。3 掌握windows 系統提供的有關對磁碟操作 api。磁碟基本物理結構原型 typedef struct dtsk geometry disk geometry 1.檔案建立 函式createfile 用於開啟磁碟驅動器並...