La codificazione della funzione Recover_the_file () è stata data dopo:
/* Funzionare per conservare i dati dei settori a partire da numero del settore start_file al numero del settore 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 codificazione dei readabsolutesectors di funzione è stata data dopo. La funzione usa il numero INTERNO 42H di estensione 13H e di funzione per leggere i settori.
Per la descrizione dettagliata della funzione, fare riferimento il capitolo “che fa i sostegni„ discussi presto in questo libro. La codificazione della funzione è come segue:
//// 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 seguente funzione è usata per nascondere o mostrare il cursore sullo schermo. Gli usi di funzione interrompono 10H, la funzione 01H per regolare il tipo del cursore. La codificazione è come segue:
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;
}
lo show_hide_cursor (32, 0) nasconde il cursore e lo show_hide_cursor (6, 7) richiama il cursore indietro. lo SSL è linea cominciare per il cursore e il esl è linea di conclusione per il cursore.
La descrizione piccola della funzione 01H di 10H INTERNO è come segue:
10H INTERNO (16 o 0x10)
Funzione 01H (o 0x01) --> regolare il tipo del cursore
Call with: AH = 01H
CH bits 0-4 = starting line for cursor
CL bits 0-4 = ending line for cursor
Returns: Nothing.
Osservazioni:
La funzione è usata per regolare il tipo del cursore selezionando le linee comincianti e di conclusioni per il cursore di fissaggi di lampeggiamento nel modo di esposizione del testo. Nei modi grafici, il cursore di fissaggi non è disponibile.
|
page 1 | 2 | 3 | 4 | 5 | 6 |
|
|
|