Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите разобраться с MBR

26K
11 марта 2007 года
traaance
1 / / 11.03.2007
Всем привет. :)
Начал разбираться с МБР и прочим. Надо по универу. Пишу в борланд си 3,5 тот который старенький под дос. Вобщем пока разбираюсь с основами. Есть у меня две функции, которые считывают первый сектор нулевой дорожки. А как дальше из этого буффера разобрать мбр и все разделы на жестком диске?
Код:
#include <bios.h>
#include <conio.h>
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>

#define byte unsigned char
#define word unsigned int
#define fdaddr struct FDADDR


unsigned char drive = 0x80;
int head=0, track=0, sect=1;
char buff[512]; //временный буффер
char  test[512];

/*------------------------------------*/
void read_int13 (void *mem)
{
 /* mem - адрес в ОП */
 union REGS rr;
 struct SREGS sr;
  rr.h.ah=2;
  rr.h.al=1;
  rr.h.dl=drive;
  rr.h.dh=0;
  rr.x.cx=1;
  sr.es=FP_SEG(mem);
  rr.x.bx=FP_OFF(mem);
  int86x(0x13,&rr,&rr,&sr);
}

void readsector(int hdd,int head,int track,int sect, void *buf)
 {
   int error_count = 0,//счетчик ошибок
       res;  //код ошибок
   while(error_count < 3)
      {
    res = biosdisk(2,hdd, head, track,sect,1, buf); //чтение  сектора
    if (!res)  //если ошибки нет - выход
      return;
    error_count++; //подсчет числа ошибок
    biosdisk(0,hdd, head, track,sect,1, buf); //сброс контроллера  диска
      }
   printf("Ошибка обращения к диску\n");
   exit(1);
 }


int main ()
 {

  clrscr();

  readsector ( drive, head, track, sect, test)   ;
  read_int13(buff);
  return 0;
 }


буду благодарен линкам (хотелось бы на русском) по данной тематике.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог