/* Struktur des Plattenadresse-Paketformats, durch die writeabsolutesectors verwendet zu werden arbeiten */
struct diskaddrpacket
{
char packetsize ; /* Größe des Pakets, im Allgemeinen 10H */
char reserved ; /*Reserviert (0)*/
int blockcount ; /* Zahl zu bringen der Blöcke */
char far *bufferaddress ; /* Adresse, zum des Puffers zu bringen */
unsigned long blocknumber[2] ; /*Beginnen der absoluten Block-Zahl */
} ;
/////Funktion, zum von Antrieb Parametern zu erhalten \\\\\
unsigned long getdrivegeometry (int drive)
{
union REGS i, o ;
struct SREGS s ;
struct geometry g = { 26, 0, 0, 0, 0, 0, 0, 0 } ;
i.h.ah = 0x48 ; /* Funktion Zahl 0x48 der INTERNEN Verlängerungen 13H */
i.h.dl = drive; /* Drive Number */
i.x.si = FP_OFF ( (void far*)&g ) ;
s.ds = FP_SEG ( (void far*)&g ) ;
/* Die spezifizierte Funktion Zahl der INTERNEN Verlängerung 13H mit Segment-Register-Werten hervorrufen */
int86x ( 0x13, &i, &o, &s ) ;
printf("\n Head = %lu, Sectors Per Track = %lu, Cylinder =
%lu\n",
g.heads,g.spt,g.cyl);
|