Chinaunix首页 | 论坛 | 博客
  • 博客访问: 465779
  • 博文数量: 724
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:47
文章分类

全部博文(724)

文章存档

2011年(1)

2008年(723)

我的朋友

分类:

2008-10-13 17:07:15

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



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



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


--------------------next---------------------

聂华闻同学,虽然我很佩服你的研究精神可以把这篇代码研究的那么透彻,不过我还是要说偷取别人的东西注上自己的名字可不好喔!你的这篇代码我前些天在书店里找到过极为类似的,经我研究估计你也就是创建了这个工程,然后把人家的实现文件引入,然后你再做点小的加工把信息提交到DIALOG,是不是?不过你的释义还是不错,说明你还是仔细研究它了,也省得我再去买那本书了。*^_^* ( Nikerla 发表于 2004-3-15 15:46:00)
 
不得不服啊! ( joeda 发表于 2004-1-11 13:22:00)
 
牛,我上中学的时候连电脑都没碰过呢 ( skyer 发表于 2003-11-20 23:52:00)
 
这有什么,现在这方面的文章满天飞。要是放到4年以前... ( firstrose 发表于 2003-8-1 0:02:00)
 
这位老兄封装的不错嘛!可惜有些情况下会失灵哦
有此兴趣的兄弟们可以到这看看

( zhpok 发表于 2003-7-13 19:30:00)
 
使用这个类库的软件在安装有硬盘保护精灵之类的软件的系统下是无法运行的。至于是否能获得SCSI Harddesk's Information我没有测试过因为我没SCSI硬盘。希望见谅 ( nie173_2 发表于 2003-6-25 18:02:00)
 
中学生就这么厉害,汉颜啊. ( xiaojin 发表于 2003-6-16 16:51:00)
 
请问老兄,您在Scsi的设备中试过吗?好象不行哎! ( myb123 发表于 2003-6-16 9:03:00)
 
.......................................................

--------------------next---------------------

阅读(421) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~