Η κωδικοποίηση του προγράμματος έχει δοθεί έπειτα:
/*Πρόγραμμα για να γίνει η εικόνα του πρώτου σκληρού δίσκου (0x80) στο δεύτερο σκληρό δίσκο (0x81)*/
#include<stdio.h>
#include<dos.h>
#include<conio.h>
/* Δομή που χρησιμοποιείται από την getdrivegeometry λειτουργία που χρησιμοποιεί την επέκταση INT 13H, αριθμός λειτουργίας 0x48. */
struct geometry
{
unsigned int size ; /* (κλήση) μέγεθος του απομονωτή */
unsigned int flags ; /*Σημαίες πληροφοριών*/
unsigned long cyl ; /* Αριθμός φυσικών κυλίνδρων στο Drive */
unsigned long heads ;/* Αριθμός φυσικών κεφαλιών στο Drive*/
unsigned long spt ; /* Αριθμός φυσικών τομέων ανά διαδρομή*/
unsigned long sectors[2] ; /*Συνολικός αριθμός τομέων στο Drive */
unsigned int bps ; /* Ψηφιολέξεις ανά τομέα */
} ;
/* Δομή του σχήματος πακέτων διευθύνσεων δίσκων, που χρησιμοποιείται από τις λειτουργίες, τα readabsolutesectors και τα writeabsolutesectors*/
struct diskaddrpacket
{
char packetsize ; /* Μέγεθος του πακέτου, γενικά 10H*/
char reserved ; /* Διατηρημένο (0)*/
int blockcount ; /* Αριθμός φραγμών στη μεταφορά */
char far *bufferaddress ; /* διεύθυνση για να μεταφέρει τον απομονωτή */
unsigned long blocknumber[2] ; /* Αρχικός απόλυτος αριθμός φραγμών */
} ;
|