Комментарии на кодирвоании:
Integrate() функции будет фактический модуль выполнять спасение архива определенного потребителем, в этой программе спасения.
Имя архива с курсом назначения для того чтобы хранить взятый архив хранится в указателе характера * Filename_with_path. Если будет любая ошибка в раскрывать архив назначения, то сообщение ошибки показано и потребитель проворен снова для того чтобы войти назначение.
Bios_disk(_DISK_READ, &dinfo функции _); читает данные архива от места для данных участка диска участком, определенного dinfo структуры и, котор сохраненного в buf буфера данных. Эти данные 512 байт написаны к архиву назначения. Это повторено до тех пор пока вполне архив не интегрировать.
Status=verify_the_sector(cylinder функции, головка, sector); проверяет участок, котор нужно прочитать. Если состояние = 10, оно представляет плохой участок (0xA). Кодирвоание функции давалось ниже:
/// Проверьте участок. (никакие данные не возвращены здесь)\\\
int verify_the_sector(unsigned int c,unsigned int h,unsigned int s)
{
int status;
char *buf;
union REGS in, out;
struct SREGS sg;
in.h.ah = 0x04; /*Номер Функции*/
in.h.al = 1; /* Количество участков, котор нужно подтвердить*/
in.h.dl = 0x00; /*Номер привода для а: */
in.h.ch = c; /* Номер Цилиндра */
in.h.dh = h; /* Главный номер*/
in.h.cl = s; /*Номер Участка*/
in.x.bx = FP_OFF(buf);/* Смещение */
sg.es = FP_SEG(buf); /* Этап */
int86x(0x13,&in,&out,&sg); /* Вызовите функцию 4H ВНУТРЕННЕ 13H */
if(out.x.cflag)
{
status=out.h.ah;
}
return(status);
}
Комментарии на кодирвоании:
Verify_the_sector() функции, проверяет участок, котор будет читать _ функция bios_disk() и возвращает состояние деятельности. Функция использует ВНУТРЕННЕ 13H и функцию 4H для проверки участка.
* buf будет буфер данных, 0x04 будет номер функции определенный in.h.ah = 0x04; и in.h.al = 1; инструктирует для проверки одного участка на времени in.h.dl = 0x00; использует для номера привода для неповоротливого привода а:, c,h, и с будут номера цилиндра, головки и участка.
Функция int86x() использована для того чтобы invoke ВНУТРЕННЕ 13H (функция 4H) с значениями регистра этапа. Состояние деятельности возвращено состоянием интежера.
|