Die Kodierung der Funktion Recover_the_file () ist zunächst gegeben worden:
/* Arbeiten, um die Daten der Sektoren zu speichern, die von beginnen Sektorzahl start_file zur Sektorzahl 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;
}
Die Kodierung der Funktion readabsolutesectors ist zunächst gegeben worden. Die Funktion verwendet die INTERNE Verlängerung 13H und Funktion Zahl 42H, um die Sektoren zu lesen.
Für die ausführliche Beschreibung der Funktion, das Kapitel verweisen „, welches die Unterstützungen bildet“, die früh in diesem Buch besprochen werden. Die Kodierung der Funktion ist, wie folgt:
//// Funktion, zum zu lesen absolutes Sektor\ \ \ \
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
}
Die folgende Funktion wird, um den Cursor auf dem Schirm zu verstecken verwendet oder zu zeigen. Der Funktion Gebrauch unterbricht 10H, Funktion 01H, um die Cursor-Art einzustellen. Die Kodierung ist, wie folgt:
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;
}
show_hide_cursor (32, 0) versteckt den Cursor und das show_hide_cursor (6, 7) zurückholt den Cursor zurück. SSL ist Anfangszeile für Cursor und esl ist Endelinie für Cursor.
Die kleine Beschreibung der Funktion 01H INTERNEN 10H ist, wie folgt:
INTERNES 10H (16 oder 0x10)
Funktion 01H (oder 0x01) --> Cursor-Art einstellen
Call with: AH = 01H
CH bits 0-4 = starting line for cursor
CL bits 0-4 = ending line for cursor
Returns: Nothing.
Anmerkungen:
Die Funktion wird verwendet, um die Cursor-Art einzustellen, indem man die beginnenden und Endlinien für den Blinkenkleinteil-Cursor im TextAnzeigemodus vorwählt. In den Grafikmodi ist der Kleinteil-Cursor nicht vorhanden.
|
page 1 | 2 | 3 | 4 | 5 | 6 |
|
|
|