Modificar MBR programando
O programa de amostra a mostrar, como nós podemos modificar os valores da entrada da tabela da divisória de MBR foi dado abaixo. O programa modifica a entrada da divisória dos valores segundos da tabela da divisória de MBR.
O coding do programa foi dado abaixo:
/* O programa para modificar os valores da divisória tabela a entrada de MBR */
# include <bios.h>
/* estrutura para ler a entrada da divisória da tabela da divisória */
struct partition
{
unsigned char bootable ; /* Byte ativo da divisória */
unsigned char start_side ; /* Ligando a cabeça */
unsigned int start_sec_cyl ; /* combinação de começar o número do setor e de cilindro */
unsigned char parttype ; /* Byte do indicador do sistema de lima*/
unsigned char end_side ; /* Cabeça do Ending*/
unsigned int end_sec_cyl ; /* combinação de começar o número do setor e de cilindro*/
unsigned long part_beg ; /*Número relativo do setor */
unsigned long plen ; /* Comprimento da divisória nos setores */
} ;
/* Estrutura para ler MBR */
struct part
{
unsigned char master_boot[446] ; /* IPL (carregador de programa inicial) */
struct partition pt[4] ; /* Tabela da divisória*/
int lasttwo ; /* Número mágico */
} ;
struct part p ;
void main()
{
unsigned int t1,t2;
clrscr();
biosdisk ( 2, 0x80, 0, 0, 1, 1, &p ) ;
display(); /* indicar a informação da tabela da divisória */
getch();
/* Deixar-nos supor que nós queremos modificar a informação da divisória da segunda entrada da divisória da tabela da divisória de MBR, com estes valores */
p.pt[1].bootable = 0x80; /* Divisória ativa do carregador */
p.pt[1].parttype = 0x7; /* Divisória de NTFS */
p.pt[1].start_side = 0; /* Começando =0 principal*/
p.pt[1].end_side = 31; /* == principal 31 do Ending */
p.pt[1].part_beg = 808416;/* Setor relativo = 808416
*/
p.pt[1].plen = 405216; /* Setores totais na divisória = 405216 */
|