一个获得硬盘物理信息的类

王朝vc·作者佚名  2006-01-17
宽屏版  字体: |||超大  

一个获得硬盘物理信息的类

作者:广西北流中学160班 聂华闻

下载本文示例源代码

介绍:

有很多时候我需要知道机器的一些物理信息(比如激活技术),所以我就利用放高考假的时间,封装了一个可以获得硬盘的物理信息的类,方便大家。此类在我的机器上测试效果如下:

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版本吧?

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有