介紹:
有很多時候我需要知道機器的一些物理信息(比如激活技術),所以我就利用放高考假的時間,封裝了一個可以獲得硬盤的物理信息的類,方便大家。此類在我的機器上測試效果如下:
CGetMachineInfo類簡介: 類名: CGetMachineInfo 類中的一些要說明的函數:
功能
int ReadPhysicalDriveInNT (void) 在NT內核系統下讀取硬盤的物理信息 int ReadDrivePortsInWin9X (void) 在9X內核系統下讀取硬盤的物理信息 int ReadIdeDriveAsScsiDriveInNT (void) 讀入NT系統下的SCSI硬盤的物理信息 BOOL ReturnInfo(int drive, DWORD diskdata [256]) 收集磁盤物理信息主函數 char *ConvertToString (DWORD, int , int )
把整型變量轉換為字符串 CGetMachineInfo(void); 類的構造函數,用於區分系統內核然後自動開始收集信息 類中的一些要說明的變量:
變量說明
CString str_DN_Modol 硬盤的出廠序號 CString str_DN_Serial 驅動器的連續序號 CString str_DN_ControllerRevision 硬盤驅動版本 CString str_HardDeskSize 硬盤的大小(bytes) CString str_HardDeskBufferSize 硬盤緩存大小(bytes) CString str_HardDeskType 硬盤類型 CString str_Controller 說明硬盤是主動盤還是輔動盤 CString str_HardDesk_Form 說明所取的信息來源於電腦上的第幾個硬盤使用CGetMachineInfo庫:
我使用了一個基於對話框的程序測試了這個類,我在對話框的初始化函數裡構造了這個對象,因為類的構造函數會自動收集信息的所以構造了一個類變量後我們就可以直接的訪問它所取得的信息就可以了。代碼如下:
BOOL CHardDeskInfoDlg::OnInitDialog()
{
CDialog::OnInitDialog(); CGetMachineInfo m_Info; //構造這個類的變量
SetDlgItmText(IDC_HARDDESK_ID,m_Info.str_DN_Modol);//直接訪問它收集到的信息
SetDlgItemText(IDC_STATIC_SERIAL,m_Info.str_DN_Serial);
SetDlgItemText(IDC_STATIC_CR,m_Info.str_DN_ControllerRevision);
SetDlgItemText(IDC_HARDDESK_SIZE,m_Info.str_HardDeskSize+" bytes");
SetDlgItemText(IDC_BUFFER_SIZE,m_Info.str_HardDeskBufferSize+" bytes");
SetDlgItemText(IDC_HARDDESK_TYPE,m_Info.str_HardDeskType);
SetDlgItemText(IDC_STATIC_Controller,m_Info.str_Controller);
......//
return TRUE; // 除非設置了控件的焦點,否則返回 TRUE
}
結尾:
這個類是很容易使用的,詳細的大家可以看源代碼(匆促中也許會有錯,請各位哥姐多包含)。
測試程序編譯通過 VC++ 7.0,類可以用於...大概5.0以上所有的VC版本吧?
本文配套源碼