プログラミングによってMBRを変更しなさい
私達がMBRの仕切りのテーブルの記入項目の価値をいかに変更してもいいか示すべきサンプルプログラムは次に与えられた。 プログラムはMBRの仕切りのテーブルの価値第2仕切りの記入項目を変更する。
プログラムのコーディングは下記のように与えられた:
/* 仕切りの価値を変更するプログラムはMBRの記入項目を台に置く */
# include <bios.h>
/* 仕切りのテーブルからの仕切りの記入項目を読む構造 */
struct partition
{
unsigned char bootable ; /* 活動区画バイト */
unsigned char start_side ; /* 頭部の開始 */
unsigned int start_sec_cyl ; /* セクターおよびシリンダー数の開始の組合せ */
unsigned char parttype ; /* ファイルシステムの表示器バイト*/
unsigned char end_side ; /* 終りの頭部 */
unsigned int end_sec_cyl ; /* セクターおよびシリンダー数の開始の組合せ */
unsigned long part_beg ; /* 相対的なセクター数 */
unsigned long plen ; /* セクターの仕切りの長さ */
} ;
/* MBRを読む構造 */
struct part
{
unsigned char master_boot[446] ; /* IPL (初期プログラム・ローダー)*/
struct partition pt[4] ; /* 仕切りのテーブル*/
int lasttwo ; /* マジックナンバー */
} ;
struct part p ;
void main()
{
unsigned int t1,t2;
clrscr();
biosdisk ( 2, 0x80, 0, 0, 1, 1, &p ) ;
display(); /* 仕切りのテーブル情報を表示しなさい */
getch();
/*私達を私達がMBRの仕切りのテーブルからの第2仕切りの記入項目の仕切り情報を変更したいと思うこれらの価値とと仮定することを許可しなさい */
p.pt[1].bootable = 0x80; /* 活動的なブートパーティション */
p.pt[1].parttype = 0x7; /*NTFSの仕切り */
p.pt[1].start_side = 0; /*ヘッド=0の開始*/
p.pt[1].end_side = 31; /* 終りのヘッド== 31*/
p.pt[1].part_beg = 808416;/* 相対的なセクター= 808416
*/
p.pt[1].plen = 405216; /* 仕切りの総セクター= 405216*/
|