AbsDiskIORec
This structure is used in DOS interrupts INT 25H and INT 26H when reading
or writing on drives having more than 65535 sectors (usually 32M). This
is used in DOS 4.0+.
AbsDiskIORec
Offset Size Contents
▀▀▀▀▀▀ ▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
+0 4 lStartSect logical sector number to start read/write
+4 2 wSectCnt number of sectors to read/write
+6 4 pBuffer FAR addr of data buffer
10 Length of an AbsDiskIORec structure
lStartSect is a logical sector number. For instance, sector 0 is the
Boot Sector. To convert a cluster▲ number (as obtained from
the FAT or a Directory Entry) into a logical sector number
use:
RootDirSectors = wSecSize / (wRootEntries * 32)
FatSectors = bFatCnt * wFatSects
DataStart = wResSects + FatSectors + RootDirSectors
where wSecSize et.al are obtained from the BootSectorRec or
other source. An easier method is to use DOS fn 32H to obtain
a Drive Parameter Block (DPB) and use the wFirstData field as
an aid to the conversion.
wSectCnt desired number of sectors to read/write. On INT 25H reads, be
sure that the buffer at pBuffer is large enough to hold the
data. Sectors are usually 512 bytes, but you should always
use DOS fn 32H (or other fn) to check the sector size.
Presumably, you could transfer up to 65535 sectors (usually
32M) at one time, but conventional▲ memory constraints will
typically limit the transfer to about 1024 (400H) sectors at
once (512K).
pBuffer is the FAR address of the buffer to receive the disk data
(INT 25H) or containing the data to write (INT 26H).
See Also: Boot Sector Layout
Partition Table
File Allocation Table
Device Drivers
-♦-