当前位置: 查字典论文网 >> 基于WinApi的硬盘监测系统设计与实现

基于WinApi的硬盘监测系统设计与实现

格式:DOC 上传日期:2023-03-04 01:09:36
基于WinApi的硬盘监测系统设计与实现
时间:2023-03-04 01:09:36     小编:

摘要:针对基于WinApi的硬盘监测系统的设计,采取了window下的DeviceIoControl API函数为主要技术,利用C++中的MFC框架实现整个系统工程,给出了基于WinApi的硬盘监测系统设计关键架构与实现伪代码,搭建具体环境针对系统大体功能进行测试,运行正常。

关键词:DeviceIoControl,硬盘监测,MFC,Windows

1.引言

目前,家用计算机大多是Windows操作系统,计算机也采用经典的冯诺依曼结构,具有独立的存储器,随着计算机越来越普及,作为计算机存储器硬盘的性能越来越受到关注,能有效的检测一个正在运行的硬盘的性能好坏,对硬盘的损坏有一定的预警,及时提醒用户保存转移备份硬盘上的重要数据有非常重要的作用。

2.系统设计与基本原理

针对系统功能的需求,主流的设计实现方式有几种,基于WinApi函数,基于外部的驱动程序,基于外接扩展卡即,基于SATA TO PCIE核的嵌入式扩展卡,基于外部驱动程序,自由度比较高,设计者自定义通讯命令格式,不足之处需要控制驱动与Windows自身文件系统的冲突,基于SATA TO PCIE核的嵌入式扩展卡,系统的反盗版机制,安全系数会较好,能对软件进行硬件绑定,不足之处除了前者,成本相对也较高,设计者针对这些不足之处,采用基于WinApi的方式实现系统的功能需求。

2.1系统基本原理

硬盘的最小处理单元是扇区,针对硬盘出现的慢扇区和坏扇区,系统能监测到,并且能及时的预警提醒用户。WinApi是windows系统对外提供的应用程序编程接口,设计者通过调用WinApi函数实现特定的windows系统功能,设计者根据系统的功能需要,主要用WinApi中的DeviceIoControl函数与挂载在计算机上的系统硬盘进行通讯,通过发送给硬盘的检测命令的相隔时间,得到一个监测扇区的超时值是否在正常范围,利用这个时间值,反应在系统的用户交互界面中。

2.2系统功能设计

设计者给出系统的UML功能用例图显示,用户的交互达到预期,客户端是一个全后台工作的系统,对外提供InI配置文件接口,同时能完成自启动过程,完成初始化工作,自动获取系统硬盘的基本信息,同时做好空闲扫描的准备工作,功能的详细用例。

3.硬盘监测系统设计实现

针对硬盘级别监测领域国内外都处于启蒙阶段,设计者提出基于WinApi的硬盘监控系统的完整解决方案,对硬盘数据保护领域有着至关重要的作用,系统有别于国内市场的鲁大师等基于系统级别的检测,该系统是基于硬盘扇区级别的检测,其预警准确性较高,系统的实现采用C++中的MFC技术。

3.1系统扇区监测核心模块设计

由于整个系统单元数较多,代码量大,设计者在此仅给出初始化,硬盘扇区监测模块的具体设计思路和伪代码。

程序初始化

设计实现,初始化需要读取系统的Ini配置文件,初始化完成,系统的自启动注册,防火墙设置,用户名,密码等需要初始化完成的步骤。设计者运用到了很多C++编程技巧以及C++的编程技术实现该模块,由于篇幅有限,在此仅给出了部分伪代码如下:

//初始化客户端用户信息

::GetPrivateProfileString(_T(“settings”),_T(“SN”),NULL,SN.GetBufferSetLength(MAX_PATH),MAX_PATH,strText);

//注册自启动

RegisterSelfStart();

keyStr=_T(“Software\\Microsoft\\Windows\\CurrentVersion\\Run”);

::RegSetValueEx(hRegKey,…)

硬盘扇区监测模块

设计者采用的主要技术是WinApi函数DeviceIoControl实现,利用该函数发送监测扇区标准ATA命令,统计命令处理时间,得到扇区的超时时间,系统根据超时时间判断硬盘的本次监测结果,由于篇幅有限,在此仅给出了部分伪代码如下:

//填充命令字中的LBA地址,和扫描区块大小

btIn[30]=BYTE(ulLBA>>24);……btIn[36]=btBlockSize;

//==开始计时==//

DWORD dwTimeBegin=GetTickCount();

if(!::DeviceIoControl(hDevice,0x4d004,btIn,0x4c,NULL,0,&dwSize,NULL))

DWORD dwTimeEnd=GetTickCount();

dwTime=dwTimeEnd-dwTimeBegin;

通过部分伪代码,清晰的看出设计基本思路,以及关键的Api函数的调用,最终,扫描监测模块能将dwTime变量传递给系统的监测数据处理模块单元处理。

3.2系统的监测数据处理算法设计

硬盘的故障预警是系统核心功能之一,采用数据处理算法,对客户端扫描得到的数据进行处理,得出三种预警方式反馈给用户,该技术环节的核心是数据处理算法,采用的是统计算法,参照正常硬盘扇区超时值得出数据的正确对应预警。

4.系统调试运行

设计者依据提出的设计方案,采用MFC编码技术实现了基于WinApi的硬盘监测系统,系统在windows系统运行效果图,可以清看出,设计者对东芝500G的故障硬盘进行监测扫描,同时系统获取东芝硬盘的基本信息,型号和序列号,并且在系统界面上反应出了对应颜色的预警标识,系统实验测试效果稳定,预警准确性高,实验证明系统设计方案的可行性和正确性。

5.总结

对系统进行了算法优化,功能调试,在实验室中进行了故障硬盘的预警监测,效果达到了设计预期。设计者提出的基于WinApi的硬盘监测系统,设计成本低,系统对硬盘故障检测准确性高,在计算机数量逐渐增多的趋势下,系统的应用前景是非常巨大,采用系统Api,无额外驱动支持,有效保证硬盘数据安全性和保密性,能适用于特殊领域的检测,设计者提出了基于WinApi的硬盘监测系统的完整设计实现方案,为该领域的发展起到了积极作用。

全文阅读已结束,如果需要下载本文请点击

下载此文档

相关推荐 更多