读写硬盘扇区的C语言程序.docx
- 文档编号:24423512
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:10
- 大小:19.87KB
读写硬盘扇区的C语言程序.docx
《读写硬盘扇区的C语言程序.docx》由会员分享,可在线阅读,更多相关《读写硬盘扇区的C语言程序.docx(10页珍藏版)》请在冰豆网上搜索。
读写硬盘扇区的C语言程序
读写硬盘的MBR和DBR扇区的程序。
/******************************************* *MasterBootRecordProgramme:
* * BackuptheMasterBootSector * * FixtheMasterBootSector * * ChangethePartitionTable * * --by04/30/99-- * *Turboc * *******************************************/#include<>#include<>#include<>#include<>#include<>#include<>#include<>#include
/*definethe */
charbuff[512]; /*bufferformasterbootsector*//*buffer1backupformasterbootsector*/charbuff1[512];/*Thisisthedosbootprogrammedata*/charsector2[512]={0xEB,0x3C,0x90,0x4D,0x53,0x57,0x49,0x4E,0x34,0x2E,0x31,0x00, 0x02,0x20,0x01,0x00,0x02,0x00,0x02,0x00,0x00,0xF8,0xC9,0x00, 0x3F,0x00,0x40,0x00,0x3F,0x00,0x00,0x00,0x01,0x0A,0x19,0x00, 0x80,0x00,0x29,0xDC,0x12,0x6F,0x04,0x30,0x34,0x32,0x36,0x39, 0x39,0x20,0x20,0x20,0x20,0x20,0x46,0x41,0x54,0x31,0x36,0x20, 0x20,0x20,0xFA,0x33,0xC9,0x8E,0xD1,0xBC,0xFC,0x7B,0x16,0x07, 0xBD,0x78,0x00,0xC5,0x76,0x00,0x1E,0x56,0x16,0x55,0xBF,0x22, 0x05,0x89,0x7E,0x00,0x89,0x4E,0x02,0xB1,0x0B,0xFC,0xF3,0xA4, 0x06,0x1F,0xBD,0x00,0x7C,0xC6,0x45,0xFE,0x0F,0x8B,0x46,0x18, 0x88,0x45,0xF9,0x38,0x4E,0x24,0x7D,0x22,0x8B,0xC1,0x99,0xE8, 0x77,0x01,0x72,0x1A,0x83,0xEB,0x3A,0x66,0xA1,0x1C,0x7C,0x66, 0x3B,0x07,0x8A,0x57,0xFC,0x75,0x06,0x80,0xCA,0x02,0x88,0x56, 0x02,0x80,0xC3,0x10,0x73,0xED,0x33,0xC9,0x8A,0x46,0x10,0x98, 0xF7,0x66,0x16,0x03,0x46,0x1C,0x13,0x56,0x1E,0x03,0x46,0x0E, 0x13,0xD1,0x8B,0x76,0x11,0x60,0x89,0x46,0xFC,0x89,0x56,0xFE, 0xB8,0x20,0x00,0xF7,0xE6,0x8B,0x5E,0x0B,0x03,0xC3,0x48,0xF7, 0xF3,0x01,0x46,0xFC,0x11,0x4E,0xFE,0x61,0xBF,0x00,0x07,0xE8, 0x23,0x01,0x72,0x39,0x38,0x2D,0x74,0x17,0x60,0xB1,0x0B,0xBE, 0xD8,0x7D,0xF3,0xA6,0x61,0x74,0x39,0x4E,0x74,0x09,0x83,0xC7, 0x20,0x3B,0xFB,0x72,0xE7,0xEB,0xDD,0xBE,0x7F,0x7D,0xAC,0x98, 0x03,0xF0,0xAC,0x84,0xC0,0x74,0x17,0x3C,0xFF,0x74,0x09,0xB4, 0x0E,0xBB,0x07,0x00,0xCD,0x10,0xEB,0xEE,0xBE,0x82,0x7D,0xEB, 0xE5,0xBE,0x80,0x7D,0xEB,0xE0,0x98,0xCD,0x16,0x5E,0x1F,0x66, 0x8F,0x04,0xCD,0x19,0xBE,0x81,0x7D,0x8B,0x7D,0x1A,0x8D,0x45, 0xFE,0x8A,0x4E,0x0D,0xF7,0xE1,0x03,0x46,0xFC,0x13,0x56,0xFE, 0xB1,0x04,0xE8,0xC1,0x00,0x72,0xD6,0xEA,0x00,0x02,0x70,0x00, 0xB4,0x42,0xEB,0x2D,0x60,0x66,0x6A,0x00,0x52,0x50,0x06,0x53, 0x6A,0x01,0x6A,0x10,0x8B,0xF4,0x74,0xEC,0x91,0x92,0x33,0xD2, 0xF7,0x76,0x18,0x91,0xF7,0x76,0x18,0x42,0x87,0xCA,0xF7,0x76, 0x1A,0x8A,0xF2,0x8A,0xE8,0xC0,0xCC,0x02,0x0A,0xCC,0xB8,0x01, 0x02,0x8A,0x56,0x24,0xCD,0x13,0x8D,0x64,0x10,0x61,0x72,0x0A, 0x40,0x75,0x01,0x42,0x03,0x5E,0x0B,0x49,0x75,0x77,0xC3,0x03, 0x18,0x01,0x27,0x0D,0x0A,0x49,0x6E,0x76,0x61,0x6C,0x69,0x64, 0x20,0x73,0x79,0x73,0x74,0x65,0x6D,0x20,0x64,0x69,0x73,0x6B, 0xFF,0x0D,0x0A,0x44,0x69,0x73,0x6B,0x20,0x49,0x2F,0x4F,0x20, 0x65,0x72,0x72,0x6F,0x72,0xFF,0x0D,0x0A,0x52,0x65,0x70,0x6C, 0x61,0x63,0x65,0x20,0x74,0x68,0x65,0x20,0x64,0x69,0x73,0x6B, 0x2C,0x20,0x61,0x6E,0x64,0x20,0x74,0x68,0x65,0x6E,0x20,0x70, 0x72,0x65,0x73,0x73,0x20,0x61,0x6E,0x79,0x20,0x6B,0x65,0x79, 0x0D,0x0A,0x00,0x00,0x49,0x4F,0x20,0x20,0x20,0x20,0x20,0x20, 0x53,0x59,0x53,0x4D,0x53,0x44,0x4F,0x53,0x20,0x20,0x20,0x53, 0x59,0x53,0x7F,0x01,0x00,0x41,0xBB,0x00,0x07,0x80,0x7E,0x02, 0x0E,0xE9,0x40,0xFF,0x00,0x00,0x55,0xAA};
/*sector1istheMasterbootprogramdata*/charsector1[512]={0xFA,0x33,0xC0,0x8E,0xD0,0xBC,0x00,0x7C,0x8B,0xF4,0x50,0x07, 0x50,0x1F,0xFB,0xFC,0xBF,0x00,0x06,0xB9,0x00,0x01,0xF2,0xA5, 0xEA,0x1D,0x06,0x00,0x00,0xB8,0x01,0x02,0xBB,0x00,0x08,0xB9, 0x01,0x00,0xBA,0x80,0x00,0xCD,0x13,0xBF,0x00,0x06,0xBE,0x00, 0x08,0xB9,0x00,0x01,0xFC,0xF3,0xA7,0x74,0x14,0xBE,0x17,0x07, 0xE8,0x2F,0x01,0xB8,0x01,0x03,0xBB,0x00,0x06,0xB9,0x01,0x00, 0xBA,0x80,0x00,0xCD,0x13,0xBE,0xBE,0x07,0xB3,0x04,0x80,0x3C, 0x80,0x74,0x0E,0x80,0x3C,0x00,0x75,0x1C,0x83,0xC6,0x10,0xFE, 0xCB,0x75,0xEF,0xCD,0x18,0x8B,0x14,0x8B,0x4C,0x02,0x8B,0xEE, 0x83,0xC6,0x10,0xFE,0xCB,0x74,0x0D,0x80,0x3C,0x00,0x74,0xF4, 0xBE,0xAE,0x06,0xE8,0xF0,0x00,0xEB,0xFE,0xBF,0x05,0x00,0xBB, 0x00,0x7C,0xB8,0x01,0x02,0x57,0xCD,0x13,0x5F,0x73,0x0C,0x33, 0xC0,0xCD,0x13,0x4F,0x75,0xED,0xBE,0xD2,0x06,0xEB,0xE0,0xBE, 0xF7,0x06,0xBF,0xFE,0x7D,0x81,0x3D,0x55,0xAA,0x75,0xD4,0x8B, 0xF5,0xEA,0x00,0x7C,0x00,0x00,0x49,0x6E,0x76,0x61,0x6C,0x69, 0x64,0x20,0x70,0x61,0x72,0x74,0x69,0x74,0x69,0x6F,0x6E,0x20, 0x74,0x61,0x62,0x6C,0x65,0x2E,0x20,0x4F,0x68,0x2C,0x6D,0x79, 0x20,0x67,0x6F,0x64,0x21,0x00,0x45,0x72,0x72,0x6F,0x72,0x20, 0x6C,0x6F,0x61,0x64,0x69,0x6E,0x67,0x20,0x6F,0x70,0x65,0x72, 0x61,0x74,0x69,0x6E,0x67,0x20,0x73,0x79,0x73,0x74,0x65,0x6D, 0x2E,0x20,0x57,0x68,0x79,0x3F,0x00,0x4D,0x69,0x73,0x73,0x69, 0x6E,0x67,0x20,0x6F,0x70,0x65,0x72,0x61,0x74,0x69,0x6E,0x67, 0x20,0x73,0x79,0x73,0x74,0x65,0x6D,0x2E,0x20,0x53,0x68,0x69, 0x74,0x21,0x00,0x4D,0x61,0x73,0x74,0x65,0x72,0x20,0x42,0x6F, 0x6F,0x74,0x20,0x53,0x65,0x63,0x74,0x6F,0x72,0x20,0x63,0x68, 0x61,0x6E,0x67,0x65,0x64,0x2E,0x0A,0x0D,0x44,0x6F,0x6E,0x27, 0x74,0x20,0x77,0x6F,0x72,0x72,0x79,0x2C,0x49,0x20,0x68,0x61, 0x76,0x65,0x20,0x72,0x65,0x63,0x6F,0x76,0x65,0x72,0x65,0x64, 0x20,0x69,0x74,0x21,0x20,0x43,0x6C,0x65,0x76,0x65,0x72,0x21, 0x20,0x45,0x54,0x2D,0x4D,0x6F,0x75,0x73,0x65,0x20,0x59,0x65, 0x61,0x68,0x21,0x0A,0x0D,0x00,0xAC,0x3C,0x00,0x74,0x0B,0x56, 0xBB,0x07,0x00,0xB4,0x0E,0xCD,0x10,0x5E,0xEB,0xF0,0xC3,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x55,0xAA};
charfnwrite[20],fnread[20]; /*filename*/FILE*fp; /*filepointer*/inthead,cylinder,sector,drive; /*harddiskhead,cylindersectordrive*/
/*definethekeycode*/
#defineESC0x011b#defineLEFT0x4b00#defineRIGHT0x4d00#defineUP0x4800#defineDOWN0x5000#defineHOME0x4700#defineEND0x4f00#definePGUP0x4900#definePGDN0x5100#defineF20x3c00#defineF10x3b00
#defineW1#defineR0 /*flagfor */#defineD0 /*flagforDosBootSector*/#defineM1 /*flagforMasterBootSector*/
/*declarethefunction*/
int fileopen(intf,char*file);/*ReadorCreatthebackupfile*/int writembr(char*file); /*writethebuffertomasterbootsector*/int writedbr(char*file); /*writethebuffertodosbootsector*/int backupmbr(char*file); /*backuptheMasterBootrecorddata*/int backupdbr(char*file); /*backupthedosbootsectordata*/int printmbr(); /*printthemasterbootsector*/int init(intf); /*inittheoperating*/voidhelp(); /*help*/voidtitle(); /*displaytheinfomation*/int copypart(char*src,char*dest);voidinfina(char*file); /*openorcreatthebackupfile*/voidclosecur();/*closethecursor*/voidopencur(); /*openthecursor*/int display(); /*displaythedata*/voidinterrupt(*reset)(); /*interruptresetthemachine*/voidresetwin(); /*resetthescreen*/voidsearch(); /*searchthedosbootsector*/int detect(intnum,intdriver,intf); /*detectthedrive*/
intdetect(intnum,intdriver,intf)/*detectthedisk*/{
unionREGSr; int86(0x13,&r,&r); if(f) return else return}
/*backupthedosbootsector*/intbackupdbr(char*file){ intflag=1;/*flagforsuccessornot*/ if(!
fileopen(W,file)) {printf("\nBackupfilewriteerror!
"); flag=0; } returnflag;
}
/*rewritethedosbootrecord*/intwritedbr(char*file){ intflag; /*flagforsuccessornot*/ charkey; search(); /*searchthethedosbootsector:
head,cylinderandsector*/ init(D); /*initializethedosbootsectordatatothebuffer*/ printf("\nWarning..."); printf("\nItmightdestoryyourharddisk!
"); printf("\nDoyouwanttoabackup(y/n)"); key=getch(); switch(key) { case'y':
case'Y':
infina(fnwrite); /*inputthebackupfilename*/ if(!
backupdbr(fnwrite)) { printf("\nBackuperror!
"); flag=0; break; } case'n':
case'N':
if(!
fileopen(R,file)) /*opentheexistedbackupfiledatatobuffer*/ { printf("\nBackupfile%sopenerror!
",file); flag=0; returnflag; } } /*rewritethedosbootsectorwiththebufferdata*/ if(biosdisk(0x03,0x80,head,cylinder,sector,1,buff1)) { printf("\nWriteMasterBootSectorerror!
"); flag=0; } else { printf("\nWriteDosBootSectorOK!
"); flag=1; }}
/*backuptheMasterBootSectordatatofile*/intbackupmbr(char*file){ intflag=1; init(M); /*initializethemasterbootsectortothebuffer*/ if(!
fileopen(W,file)) { printf("\nBackupfilewriteerror!
"); flag=0; } returnflag;}
intfileopen(intf,char*file)/*fforreadorcreatfile*/{ intflag=1; if(f==0) { if((fp=fopen(file,"rb"))!
=NULL) { fread(buff1,512,1,fp); fclose(fp); } elseflag=0; } if(f==1) { if((fp=fopen(file,"wb"))!
=NULL) { fwrite(buff,512,1,fp); fclose(fp); } elseflag=0; } returnflag;}
intwritembr(char*file){ intflag=1; charkey; printf("\nWarning..."); printf("\nItmightdestoryyourharddisk!
"); printf("\nDoyouwanttoabackup(y/n)"); key=getch(); switch(key) { case'y':
case'Y':
infina(fnwrite); init(M); /*initializetheMBRtobuffer*/ if(!
backupmbr(fnwrite))/*backuptheMBR*/ { printf("\nBackuperror!
"); flag=0;
}
printf("\nFile%sbackupok!
",fnwrite); if(!
biosdisk(0x03,0x80,0,0,3,1,buff)) printf("\n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 读写 硬盘 扇区 语言 程序