教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> 论文> 其他论文> 基于WinApi的硬盘监测系统设计与实现

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

上传者:网友
|
翻新时间:2023-03-04

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

摘要:针对基于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的硬盘监测系统的完整设计实现方案,为该领域的发展起到了积极作用。

下载文档

版权声明:此文档由查字典文档网用户提供,如用于商业用途请与作者联系,查字典文档网保持最终解释权!

网友最新关注

二十年后回故乡
二十年后回故乡
二十年后回故乡
二十年后回故乡
二十年后回故乡
二十年后回故乡
二十年后回故乡
二十年后回故乡
二十年后回故乡
二十年后回故乡
二十年后回故乡
二十年后回故乡
二十年后回故乡
二十年后回故乡
二十年后回故乡
保证书兼检讨书
旷操检讨书范文
党员违纪检讨书范文
大学生自我批评范文
批评家的检讨书
违反校规的检讨书范文
个人违纪检讨书
司机检讨书范文
给老婆大人的检讨书
党员缺席重要会议检讨书
开会接电话的检讨书范文
自我批评与反省
上课犯错的检讨书
给领导的检讨书范文
犯错学生致老师的检讨书
预算编制依据
施工新手 教你怎样看图纸
逆作法施工技术
墙体构造常识问答
重大设计变更和一般设计变更区别
如何应对在工程造价上钻空子
结构专业施工图审查的疑难问题解答
房地产企业成本管理四步法
钢筋砼工程工程量的计算
工程结算疑难问题详解
建筑行业潜规则汇总
不说就忘的争议费用
绘制建筑施工图的步骤和方法
120条建筑设计经验分享
平面设计师资格证需要考什么
《我为你骄傲》 写作指导
《王二小》教学难点
《三个儿子》随堂练习 提高篇
《我为你骄傲》 训练素材
《三个儿子》 作者简介
《我为你骄傲》 范文习作
《我为你骄傲》 考点练兵2
《三个儿子》随堂练习 巩固篇
《三个儿子》 考点练兵1
《三个儿子》 知识点精析
《三个儿子》 考点练兵2
《三个儿子》 范文习作
《我为你骄傲》 考点练兵1
《三个儿子》 趣闻故事
《三个儿子》 重难点分析