La codificación de la función Recover_the_file () se ha dado después:
/* Funcionar para ahorrar los datos de los sectores a partir de número del sector start_file al número del sector end_file */
Recover_the_file()
{
FILE *fp;
if((fp=fopen(filename, "wb"))==NULL)
{
gotoxy(10,23);printf("Error Opening File %s",
filename);
getch();
exit(1);
}
for(i=start_file;i<=end_file;i++)
{
gotoxy(19,16);cprintf("Scanning Sector Number =
%ld", i);
readabsolutesectors ( 0x81, i, 1, buffer );
fwrite(buffer,512,1, fp);
}
fclose(fp);
gotoxy(15,18);cprintf("[ %d ] Files Recovered...",num);
gotoxy(5,19);cprintf(" ");
return;
}
La codificación de los readabsolutesectors de la función se ha dado después. La función utiliza el número INTERNO 42H de la extensión 13H y de la función para leer los sectores.
Para la descripción detallada de la función, referir el capítulo las “que hace reservas” discutidas anterior en este libro. La codificación de la función es como sigue:
//// Function to read absolute sector(s) \\\\
int readabsolutesectors ( int drive,
unsigned long sectornumber,
int numofsectors,
void *buffer )
{
union REGS i, o ;
struct SREGS s ;
struct diskaddrpacket pp ;
pp.packetsize = 16 ; /* packet size = 10H */
pp.reserved = 0 ; /* Reserved = 0 */
pp.blockcount = numofsectors ; /* Number of sectors
to read */
/* for Data buffer */
pp.bufferaddress = (char far*) MK_FP ( FP_SEG((void far*)buffer), FP_OFF((void far*)buffer));
pp.blocknumber[0] = sectornumber ; /* Sector number
to read */
pp.blocknumber[1] = 0 ; /* Block number */
i.h.ah = 0x42 ; /* Function Number*/
i.h.dl = drive ; /* Physical Drive Number */
/* ds:si for buffer Parameters */
i.x.si = FP_OFF ( (void far*)&pp ) ;
/* ds:si for buffer Parameters */
s.ds = FP_SEG ( (void far*)&pp ) ;
/* Invoke the specified Function of INT 13H with
segment register values */
int86x ( 0x13, &i, &o, &s ) ;
if ( o.x.cflag==1)
return 0 ; //failure
else
return 1 ; // success
}
La función siguiente se utiliza para ocultar o para demostrar el cursor en la pantalla. Las aplicaciones de la función interrumpen 10H, función 01H para fijar el tipo del cursor. La codificación es como sigue:
show_hide_cursor( ssl, esl )
int ssl, esl ;
{
union REGS i, o ;
i.h.ah = 1 ;
i.h.ch = ssl ;
i.h.cl = esl ;
i.h.bh = 0 ;
int86 ( 16, &i, &o ) ;
return;
}
el show_hide_cursor (32, 0) oculta el cursor y el show_hide_cursor (6, 7) recupera el cursor detrás. el SSL es línea que comienza para el cursor y el esl es línea del conclusión para el cursor.
La pequeña descripción de la función 01H de 10H INTERNO es como sigue:
10H INTERNO (16 o 0x10)
Función 01H (o 0x01) --> Fijar el tipo del cursor
Call with: AH = 01H
CH bits 0-4 = starting line for cursor
CL bits 0-4 = ending line for cursor
Returns: Nothing.
Comentarios:
La función es utilizada para fijar el tipo del cursor seleccionando las líneas que comienzan y que terminan para el cursor hardware del cekntelleo en modo de exhibición del texto. En los modos de gráficos, el cursor hardware no está disponible.
|
page 1 | 2 | 3 | 4 | 5 | 6 |
|
|
|