Table of Contents
Note: This API call is for DOS and Win16 personality only. Use Family API for portability.
Int 21H, AH=32H
Version
2 and higher
Brief
GET DOS DRIVE PARAMETER BLOCK FOR SPECIFIC DRIVE
Family API
Input
AH = 32h DL = drive number (00h = default, 01h = A:, etc)
Return
AL = status
00h successful DS:BX -> Drive Parameter Block (DPB) (see #01395) for specified drive FFh invalid or network drive
Notes
the OS/2 compatibility box supports the DOS 3.3 version of this call except for the DWORD at offset 12h
this call updates the DPB by reading the disk; the DPB may be accessed via the DOS list of lists (see #01627 at AH=52h) if disk access is not desirable.
undocumented prior to the release of DOS 5.0; only the DOS 4.0+ version of the DPB has been documented, however
supported by DR DOS 3.41+; DR DOS 3.41-6.0 return the same data as MS-DOS 3.31
IBM ROM-DOS v4.0 also reports invalid/network (AL=FFh) on the ROM drive
Format of DOS Drive Parameter Block:
Offset | Size | Description |
---|---|---|
00h | BYTE | drive number (00h = A:, 01h = B:, etc) |
01h | BYTE | unit number within device driver |
02h | WORD | bytes per sector |
04h | BYTE | highest sector number within a cluster |
05h | BYTE | shift count to convert clusters into sectors |
06h | WORD | number of reserved sectors at beginning of drive |
08h | BYTE | number of FATs |
09h | WORD | number of root directory entries |
0Bh | WORD | number of first sector containing user data |
0Dh | WORD | highest cluster number (number of data clusters + 1) 16-bit FAT if greater than 0FF6h, else 12-bit FAT |
0Fh | BYTE | number of sectors per FAT |
10h | WORD | sector number of first directory sector |
12h | DWORD | address of device driver header (see #01646) |
16h | BYTE | media ID byte (see #01356) |
17h | BYTE | 00h if disk accessed, FFh if not |
18h | DWORD | pointer to next DPB |
—DOS 2.x— | ||
1Ch | WORD | cluster containing start of current directory, 0000h=root, FFFFh = unknown |
1Eh | 64 BYTEs | ASCIZ pathname of current directory for drive |
—DOS 3.x— | ||
1Ch | WORD | cluster at which to start search for free space when writing |
1Eh | WORD | number of free clusters on drive, FFFFh = unknown |
—DOS 4.0-6.0— | ||
0Fh | WORD | number of sectors per FAT |
11h | WORD | sector number of first directory sector |
13h | DWORD | address of device driver header (see #01646) |
17h | BYTE | media ID byte (see #01356) |
18h | BYTE | 00h if disk accessed, FFh if not |
19h | DWORD | pointer to next DPB |
1Dh | WORD | cluster at which to start search for free space when writing, usually the last cluster allocated |
1Fh | WORD | number of free clusters on drive, FFFFh = unknown |
See also
Note
Text based on Ralf Brown Interrupt List Release 61
osFree Macro Library | |
---|---|
Video I/O | @SetMode @SetCurSz @SetCurPos @GetCur @SetPage @ScrollUp @ScrollDn @Scroll @GetChAtr @PutChAtr @PutCh @SetPalet @SetColor @SetDot @GetDot @WrtTTY @VideoState @GetMode @GetDisplay @GetVideoState @GetEGAInfo @Cls |
Hardware info | @Equipment @MemSize |
Serial I/O | @AuxInit @AuxSendChar @AuxRecieveChar @AuxStatus |
Tape I/O | @TapeOn @TapeOff @TapeRead @TapeWrite |
Keyboard I/O | @KbdStatus @CharIn @CharPeek |
Printer I/O | @PrnPrint @PrnInit @PrnStatus |
Disk I/O | @DskReset @DskStatus @DskRead @DskWrite @DskVerify @DskFormat |
Date and Time | @SetTime @GetTime |
Mouse | @MouInit @MouShowPointer @MouStatus @MouSetPos @MouSetMickey @MouRegion |
Memory manager | @ModBlok SET_BLOCK |