/*-------------------------------------------------------------------------*\
| |
| IDE 硬盘参数读取程序 |
| ~~~~~~~~~~~~~~~~~~~~ |
| Copyright (C) 1997-2003, Victor Chen |
| Email: victor@cppfans.com |
| Homepage: http://www.cppfans.com |
| |
\*-------------------------------------------------------------------------*/
#include <vcl.h>
#pragma hdrstop
#include "UnitHdDisk.h"
#include "IDE_DISK.H"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFormHdParams *FormHdParams;
//---------------------------------------------------------------------------
__fastcall TFormHdParams::TFormHdParams(TComponent* Owner)
: TForm(Owner)
{
Memo1->Text = "读取硬盘参数\r\nCopyright (C) Victor Chen\r\nHomepage: http://www.cppfans.com/\r\n\r\n";
Memo1->Lines->Add("按“硬盘参数”按钮读取硬盘参数\r\n==============================================");
bWinIoInitOK = InitializeWinIo();
if(!bWinIoInitOK)
{
Application->MessageBox("不能装载 WinIO 程序!","错误信息",MB_OK|MB_ICONSTOP);
Application->Terminate();
}
}
//---------------------------------------------------------------------------
__fastcall TFormHdParams::~TFormHdParams()
{
if(bWinIoInitOK)
ShutdownWinIo();
}
//---------------------------------------------------------------------------
void __fastcall TFormHdParams::ButtonHdParamsClick(TObject *Sender)
{
TIdePortAddrItem ControllerPorts[] = {IDE1_Port, IDE2_Port};
AnsiString ControllerNames[] = {"IDE0", "IDE1"};
char *HardDiskNames[] = {"主盘", "从盘"};
char HardDiskDetected; //bit 0:master, bit 1:slave
TIDE_ID_Inf IDE_Info;
char Str[128];
for(int i=0; i<2; i++)
{
Memo1->Lines->Add("正在检测: " + ControllerNames[i] + ", 可能需要几秒钟时间, 请稍候……");
HardDiskDetected=DetectHDD(ControllerPorts[i]);
switch(HardDiskDetected&3)
{
case 0: Memo1->Lines->Add("没检测到硬盘"); break;
case 1: Memo1->Lines->Add("检测到主盘"); break;
case 2: Memo1->Lines->Add("检测到从盘"); break;
case 3: Memo1->Lines->Add("检测到主盘和从盘"); break;
}
for(int k=0;k<2;k++) //primary/slave disk
if(HardDiskDetected & (1<<k))
{
Memo1->Lines->Add("==============================================");
Memo1->Lines->Add(ControllerNames[i] + HardDiskNames[k] + ":");
Memo1->Lines->Add("----------------------------------------------");
GetHDDInfo(&IDE_Info, k, ControllerPorts[i]);
//---------- model, serial number & firmware revision
WordToStr(Str, IDE_Info.nModel, 20);
Memo1->Lines->Add("型 号: " + AnsiString(Str).Trim());
WordToStr(Str, IDE_Info.Serial, 10);
Memo1->Lines->Add("序 列 号: " + AnsiString(Str).Trim());
WordToStr(Str, IDE_Info.Revisn, 4);
Memo1->Lines->Add("固件版本: " + AnsiString(Str).Trim());
//---------- capacity
unsigned long LbaCap = IDE_Info.LBASec/2048, NomCap = ((unsigned long)(IDE_Info.L_Cyln)*(IDE_Info.L_Head)*(IDE_Info.L_Sect))/2048;
Memo1->Lines->Add("容 量: " + AnsiString().sprintf("%lu Mb",LbaCap>NomCap?LbaCap:NomCap));
//---- output hard disk normal information
Memo1->Lines->Add(AnsiString().sprintf("柱 面 数: %u", IDE_Info.L_Cyln));
Memo1->Lines->Add(AnsiString().sprintf("磁 头 数: %u", IDE_Info.L_Head));
Memo1->Lines->Add(AnsiString().sprintf("扇 区 数: %u", IDE_Info.L_Sect));
Memo1->Lines->Add(AnsiString().sprintf("缓存容量: %u kb", IDE_Info.BufNum>>1));
Memo1->Lines->Add(AnsiString().sprintf("ECC 字节: %u bytes", IDE_Info.ECCByt));
Memo1->Lines->Add(AnsiString().sprintf("LBA 支持: %s", (IDE_Info.Capabs&IDE_LBA_Spp)?"是":"否"));
}
Memo1->Lines->Add("==============================================");
}
}
//---------------------------------------------------------------------------
void __fastcall TFormHdParams::ButtonExitClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
硬盘参数读取程序(经典)
需积分: 31 13 浏览量
2008-11-01
08:18:22
上传
评论
收藏 32KB RAR 举报
踏浪前行的弄潮儿
- 粉丝: 39
- 资源: 377
最新资源
- 由 Top10 开发和使用的惯用 Scala Redis 客户端 这是一项正在进行的工作,虽然在生产中使用,但应将其视为在生产中
- SwiftUI - SceanAppDelegate
- SwiftUI - AppDelegate
- Cetus是由C语言开发的关系型数据库MySQL的中间件,主要提供了一个全面的数据库访问代理功能
- 5152单片机proteus仿真和源码用定时器T0的中断实现渴望主题曲的播放
- 数据库垂直分区,业务逻辑层 配合数据库中间件实现水平分区和垂直分区
- 5152单片机proteus仿真和源码用定时器T0的中断控制1位LED闪烁
- 这是用于在 Akka 集群中复制数据的库的早期预览 它是一个复制的内存数据存储,支持低延迟和高可用性 要求
- 基于ketama算法和eredis项目的redis erlang驱动,主要以一致性hash的方式存储数据,做到key的分布式存储
- 2024五一杯B题要点和难点建模解析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈