BPB: BIOS Parameter Block
This is a subset of the data found in the Boot Sector Layout used by
device drivers. The 'Build BPB' device driver command (DvRq 02H) expects
the driver to fill a buffer in this layout.
Note the DOS 4.0 extensions (Extended BPB) at the end of the block.
Offset Size Contents
▀▀▀▀▀▀ ▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
+0 2 wSectSize bytes per sector (usually 512; 200H)
+2 1 bClustSects sectors per allocation unit (cluster)
+3 2 wResSects boot and reserved sectors
+5 1 bFatCnt number of File Allocation Tables. See FAT.
+6 2 wRootEntries max number of 32-byte DirEntryRecs in root
+8 2 wTotSects total number of sectors in media
0000H means >32 MB, so use lBigTotSects
+0aH 1 bMedia media descriptor (same as 1st byte in FAT)
+0bH 2 wFatSects number of sectors in one FAT
───────────────────────── Extended BPB additions
+0dH 2 wSectsPerTrk sectors per track
+0fH 2 wHeads number of read/write heads
+11H 4 lHidSects hidden sectors (ignore hiword in pre-DOS 4.0)
+15H 4 lBigTotSects 32-bit TotSects in volume (partitions > 32M)
25 Length of a BPBRec (was 13 in pre-DOS 4.0)
wResSects The number of "reserved sectors", starting with absolute
sector 0. This counts how many sectors come before the first
FAT in the partition. It is usually 0001H; that is only the
boot sector comes before the first FAT sector.
bFatCnt The number of File Allocation Tables. Usually 02H; The second
FAT is just a copy of the first.
wRootEntries The size of the root directory, given in 32-byte units. The
root directory has a fixed size, but subdirectory space is
allocated as needed.
wTotSects Total size of the media, in sectors (wSecSize bytes each).
DOS 4.0+: This field will be 0000H to indicate a DOS partition
that is larger than 32 MB. In that case, the total sector
count is the 32-bit value lBigTotSects.
bMedia Might identify the media. Media Descriptor.
───────────────────────────────────── Extended BPB (DOS 4.0+)
These fields may help the driver and/or disk utility programs
to understand the media better. Also, you may need to know
this stuff when using BIOS Disk I/O (INT 13H).
wSectsPerTrk Sectors per track (one surface of one platter)
wHeads Disk read/write heads (total surfaces all platters)
lHidSects Sectors before the start of the 1st FAT in the partition.
lBigTotSects Dword total sectors in the partition. When a partition is
larger than 32 MB, there are more than 65535 sectors--the
actual count won't fit in wTotSects so it goes here.
See Also: Boot Sector Layout
File Allocation Table