首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

CGetMachineInfo 類別:輕鬆獲取硬碟物理資訊的完整指南

     編輯:關於VC++

前言

在軟體開發過程中,經常需要獲取機器的硬體資訊,例如用於軟體授權驗證、硬體指纹識別或系統診斷等場景。本文介紹一個封裝良好的 C++ 類別 CGetMachineInfo,能夠跨平台獲取硬碟的詳細物理資訊,支援 Windows 9x 與 NT 核心系列作業系統。

類別架構與核心功能

主要成員函數

函數名稱功能描述
ReadPhysicalDriveInNT()在 NT 核心系統下讀取硬碟物理資訊
ReadDrivePortsInWin9X()在 9x 核心系統下讀取硬碟物理資訊
ReadIdeDriveAsScsiDriveInNT()讀取 NT 系統下 SCSI 硬碟的物理資訊
ReturnInfo()收集磁碟物理資訊的主入口函數
ConvertToString()將整型變數轉換為字串格式

關鍵資料成員

類別提供以下屬性來儲存獲取的硬碟資訊:

  • str_DN_Modol - 硬碟出廠型號
  • str_DN_Serial - 硬碟序列號
  • str_DN_ControllerRevision - 控制器韌體版本
  • str_HardDeskSize - 硬碟容量(位元組)
  • str_HardDeskBufferSize - 硬碟快取大小(位元組)
  • str_HardDeskType - 硬碟類型
  • str_Controller - 主/從硬碟標識
  • str_HardDesk_Form - 硬碟索引(第幾顆硬碟)

實際應用範例

以下展示如何在對話框初始化時使用此類別:

BOOL CHardDeskInfoDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
    CGetMachineInfo m_Info; // 建立類別實例,建構函數自動收集資訊
    
    SetDlgItemText(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 + _T(" bytes"));
    SetDlgItemText(IDC_BUFFER_SIZE, m_Info.str_HardDeskBufferSize + _T(" bytes"));
    SetDlgItemText(IDC_HARDDESK_TYPE, m_Info.str_HardDeskType);
    SetDlgItemText(IDC_STATIC_Controller, m_Info.str_Controller);
    
    return TRUE;
}

技術細節與相容性

  • 開發環境:Visual C++ 7.0 編譯通過
  • 適用版本:理論上支援 VC++ 5.0 及以上版本
  • 核心原理:建構函數自動偵測作業系統核心類型,呼叫對應的底層 API 獲取資訊

測試結果展示

CGetMachineInfo 類別測試執行結果

總結

這個類別封裝了複雜的跨平台硬體資訊獲取邏輯,提供簡潔的介面供上層應用呼叫。原始碼開放供參考,開發者可根據需求擴展更多硬體資訊的獲取功能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved