Commentaren op codage:
De functie integreert () is de daadwerkelijke module van het uitvoeren van de terugwinning van het gebruiker gespecificeerde dossier, in dit terugwinningsprogramma.
De dossiernaam met de bestemmingsweg om wordt het teruggekregen dossier op te slaan opgeslagen in de karakterwijzer * Filename_with_path. Als er om het even welke fout in het openen van het bestemmingsdossier is, wordt de foutenmelding getoond en de gebruiker is snel opnieuw om de bestemming in te gaan.
De functie _ bios_disk(_DISK_READ, &dinfo); leest de gegevens van het dossier van het gegevensgebied van de schijfsector door sector, dat door structuurdinfo wordt gespecificeerd en dat in de gegevensbuffer buf wordt opgeslagen. Dit gegeven van 512 bytes wordt geschreven aan het bestemmingsdossier. Dit wordt herhaald tot het volledige dossier wordt geïntegreerd.
Functiestatus=verify_the_sector (cilinder, hoofd, sector); verifiëert de te lezen sector. Als de status = 10, het een slechte (0xA) sector vertegenwoordigt. De codage van de functie is gegeven hieronder:
/// Verifiëer de Sector. (Geen Gegeven wordt overgebracht hier)\\\
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; /*Het Aantal van de functie */
in.h.al = 1; /* Aantal Te verifiëren Sectoren*/
in.h.dl = 0x00; /*Het Aantal van de aandrijving voor A: */
in.h.ch = c; /*Het Aantal van de cilinder*/
in.h.dh = h; /*Hoofd Aantal*/
in.h.cl = s; /* Het Aantal van de sector */
in.x.bx = FP_OFF(buf);/* Compensatie */
sg.es = FP_SEG(buf); /* Segment */
int86x(0x13,&in,&out,&sg); /* Oproepen de Functie 4H van int. 13H */
if(out.x.cflag)
{
status=out.h.ah;
}
return(status);
}
Commentaren op codage:
Functieverify_the_sector (), verifiëert sector die door de _ de bios_disk() functie en winst het statuut van de verrichting moet worden gelezen. De functie gebruikt int. 13H en functie 4H om de sector te verifiëren.
* buf is de gegevensbuffer, is 0x04 het functieaantal wordt gespecificeerd dat door in.h.ah = 0x04; en in.h.al = 1; instrueert om de één sector in een tijd te verifiëren in.h.dl = 0x00; wordt gebruikt voor het aandrijvingsaantal voor slappe aandrijving A:, c,h, en s zijn de aantallen van de Cilinder, van het Hoofd en van de Sector.
De functie int86x () wordt gebruikt om int. 13H (functie 4H) met de waarden van het segmentregister aan te halen. Het statuut van de verrichting is teruggekeerd door de geheelstatus.
|