Comentarios sobre la codificación:
La función integra () es el módulo real de realizar la recuperación del archivo especificado usuario, en este programa de la recuperación.
El nombre del archivo con la trayectoria de la destinación para almacenar el archivo recuperado se almacena en el *Filename_with_path del indicador del carácter. Si hay cualquier error en abrir el archivo de la destinación, se exhibe el mensaje de error y el usuario es pronto otra vez entrar en la destinación.
El _bios_disk de la función (_DISK_READ, &dinfo); lee los datos del archivo del área de datos del sector del disco por el sector, especificada por el dinfo de la estructura y almacenada en el buf del almacenador intermediario de los datos. Estos datos de 512 octetos se escriben al archivo de la destinación. Se repite esto hasta que se integra el archivo completo.
El status=verify_the_sector de la función (cilindro, cabeza, sector); verifica el sector que se leerá. Si el estado = 10, él representa un mal sector (0xA). La codificación de la función se ha dado abajo:
///Verificar el sector. (No se transfiere ningunos datos aquí) \\\
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; /* Número de la función */
in.h.al = 1; /*Número de los sectores a verificar*/
in.h.dl = 0x00; /* Número de impulsión para A:*/
in.h.ch = c; /* Número de cilindro */
in.h.dh = h; /* Número principal */
in.h.cl = s; /* Número del sector */
in.x.bx = FP_OFF(buf);/* Compensación */
sg.es = FP_SEG(buf); /* Segmento */
int86x(0x13,&in,&out,&sg); /* Llamar la función 4H de 13H INTERNO*/
if(out.x.cflag)
{
status=out.h.ah;
}
return(status);
}
Comentarios sobre la codificación:
El verify_the_sector de la función (), verifica el sector que se leerá por la función y las vueltas del _bios_disk () el estado de la operación. La función utiliza 13H INTERNO y la función 4H para verificar el sector.
el *buf es el almacenador intermediario de los datos, 0x04 es el número de la función especificado por in.h.ah = 0x04; e in.h.al = 1; manda para verificar el un sector a la vez. in.h.dl = 0x00; se utiliza para el número de impulsión para la impulsión floja A: , c, h, y s son números del cilindro, principales y del sector.
La función int86x () se utiliza para invocar 13H INTERNO (función 4H) con valores del registro del segmento. El estado de la operación es vuelto por el estado del número entero.
|