Osservazioni su codificazione:
La funzione integra () è il modulo reale di effettuazione del recupero della lima specificata utente, in questo programma di recupero.
Il nome di archivio con il percorso della destinazione per immagazzinare la lima recuperata è immagazzinato nel *Filename_with_path dell'indicatore del carattere. Se ci è qualunque errore nell'apertura della lima della destinazione, il messaggio di errore è visualizzato e l'utente è ancora rapido entrare nella destinazione.
Il _bios_disk di funzione (_DISK_READ, &dinfo); legge i dati della lima dalla zona di dati del settore del disc dal settore, specificata dal dinfo della struttura e memorizzata nel buf dell'amplificatore di dati. Questi dati di 512 byte sono redatti alla lima della destinazione. Ciò è ripetuta fino ad integrare la lima completa.
Lo status=verify_the_sector di funzione (cilindro, testa, settore); verifica il settore da leggere. Se la condizione = 10, esso rappresenta un settore difettoso (0xA). La codificazione della funzione è stata data qui sotto:
/// Verificare il settore. (Nessun dato è trasferito qui) \\\
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; /* Numero di funzione*/
in.h.al = 1; /*Numero di settori da verificare*/
in.h.dl = 0x00; /* Numero di azionamento per A: */
in.h.ch = c; /* Numero di cilindro */
in.h.dh = h; /* Numero capo */
in.h.cl = s; /* Numero del settore */
in.x.bx = FP_OFF(buf);/* Immagine riportata */
sg.es = FP_SEG(buf); /* Segmento*/
int86x(0x13,&in,&out,&sg); /* Denominare la funzione 4H di 13H INTERNO*/
if(out.x.cflag)
{
status=out.h.ah;
}
return(status);
}
Osservazioni su codificazione:
Il verify_the_sector di funzione (), verifica il settore da leggere dalla funzione e dai ritorni del _bios_disk () la condizione del funzionamento. La funzione usa 13H INTERNO e la funzione 4H per verificare il settore.
il *buf è l'amplificatore di dati, 0x04 è il numero di funzione specificato da in.h.ah = 0x04; e in.h.al = 1; insegna a per verificare l'un settore alla volta. in.h.dl = 0x00; è usato per il numero di azionamento per azionamento floscio A: , la c, la h e la s sono numeri capi e del settore del cilindro.
La funzione int86x () è usata per invocare 13H INTERNO (funzione 4H) con i valori del registro di segmento. La condizione del funzionamento è restituita dalla condizione di numero intero.
|