Modificare MBR programmandosi
Il programma di campione da mostrare, come possiamo modificare i valori dell'entrata della tabella del divisorio di MBR è stato dato sotto. Il programma modifica l'entrata del divisorio di valori secondi della tabella del divisorio di MBR.
La codificazione del programma è stata data qui sotto:
/* Il programma per modificare i valori del divisorio pospone l'entrata di MBR */
# include <bios.h>
/* struttura per leggere l'entrata del divisorio dalla tabella del divisorio */
struct partition
{
unsigned char bootable ; /* Byte attivo del divisorio */
unsigned char start_side ; /* Avviare testa */
unsigned int start_sec_cyl ; /* combinazione di iniziare numero di cilindro e del settore*/
unsigned char parttype ; /* Byte dell'indicatore del sistema di lima */
unsigned char end_side ; /* Testa di conclusione */
unsigned int end_sec_cyl ; /* combinazione di iniziare numero di cilindro e del settore */
unsigned long part_beg ; /* Numero relativo del settore*/
unsigned long plen ; /* Lunghezza del divisorio nei settori */
} ;
/*Struttura per leggere MBR*/
struct part
{
unsigned char master_boot[446] ; /* IPL (caricatore di programma iniziale)*/
struct partition pt[4] ; /*Tabella del divisorio*/
int lasttwo ; /* Numero magico */
} ;
struct part p ;
void main()
{
unsigned int t1,t2;
clrscr();
biosdisk ( 2, 0x80, 0, 0, 1, 1, &p ) ;
display(); /* visualizzare le informazioni della Tabella del divisorio */
getch();
/* Supponiamo che desideriamo modificare le informazioni del divisorio della seconda entrata del divisorio dalla tabella del divisorio di MBR, con questi valori */
p.pt[1].bootable = 0x80; /* Divisorio attivo del caricamento del sistema */
p.pt[1].parttype = 0x7; /* Divisorio di NTFS */
p.pt[1].start_side = 0; /* Iniziare =0 capo */
p.pt[1].end_side = 31; /* == capo 31 di conclusione*/
p.pt[1].part_beg = 808416;/*Settore relativo = 808416
*/
p.pt[1].plen = 405216; /*Settori totali in divisorio = 405216*/
|