上位机MFC读取与修复MBR源代码
例程实现读写磁盘主引导区(MBR),
效果如上图。
部分关键代码如下。
读取代码:
- void CRW_HDDDlg::OnButtonReadDPT()
- {
- // TODO: Add your control notification handler code here
- int disk_num=m_CtrlCombo.GetCurSel(); //获取ComboBox数据,即驱动器号
- CString disk_char;
- disk_char.Format("%d",disk_num); //转换成字符串类型
- unsigned char *buffDPT=(unsigned char*)malloc(512);
- buffDPT=ReadSectors(0,1,disk_char);
- CString DPT;
- m_strEDIT=BcdToAsc(buffDPT,512);
- UpdateData(false);
- }
复制代码
修复代码:
- void CRW_HDDDlg::OnButtonRepair()
- {
- int disk_num=m_CtrlCombo.GetCurSel(); //获取ComboBox数据,即驱动器号
- CString disk_char;
- disk_char.Format("%d",disk_num); //转换成字符串类型
- CDialog::SetWindowText(disk_char);
- //读取正确MBR文件
- unsigned char *buff=(unsigned char*)malloc(512); //存正确MBR
- unsigned char *DPT=(unsigned char*)malloc(512); //存正确的DPT
- HANDLE filehandle = CreateFile("112",
- GENERIC_READ,
- FILE_SHARE_READ|FILE_SHARE_WRITE,
- NULL,
- OPEN_ALWAYS,
- FILE_ATTRIBUTE_NORMAL,
- NULL);
- DWORD byte1;
- ReadFile(filehandle,buff,512,&byte1,NULL);
- CloseHandle(filehandle);
- DPT=ReadSectors(0,1,disk_char); //读选定磁盘001扇区
- for(int i=446;i<=512;i++){buff[i]=DPT[i];}
- //写入磁盘001扇区
- WriteSectors(0,1,disk_char,buff);
- MessageBox("该驱动器MBR修复完成!",NULL,MB_OK);
- }
复制代码 源代码下载地址。
上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例 经历1年的编程与录制点击进入查看
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
MBR是主引导记录(Master Boot Record)的英文缩写,
在传统硬盘分区模式中,引导扇区是每个分区(Partition)的第一扇区,
而主引导扇区是硬盘的第一扇区。
为了方便计算机访问硬盘,
把硬盘上的空间划分成许许多多的区块(英文叫sectors,即扇区),
然后给每个区块分配一个地址,称为逻辑块地址(即LBA)。
在MBR中,分区表的大小是固定的,一共可容纳4个主分区信息。
在MBR分区表中逻辑块地址采用32位二进制数表示,
因此一共可表示2^32(2的32次方)个逻辑块地址。
如果一个扇区大小为512字节,那么MBR硬盘最大分区容量仅为2TB。
上位机MFC读取与修复MBR源代码
扩展资料:
启动PC机时,系统首先对硬件设备进行测试,
测试成功后进入自举程序INT 19H,
然后读系统磁盘0柱面、0磁头、1扇区的主引导记录(MBR)内容到内存指定单元0:
7C00地址开始的区域,并执行MBR程序段。
|