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 | 





