Format of device driver header:

Offset Size Description
00h DWORD pointer to next driver, offset=FFFFh if last driver
04h WORD device attributes
Character device:
bit 15 set
bit 14 IOCTL supported (see AH=44h)
bit 13 output until busy supported
bit 12 reserved
bit 11 OPEN/CLOSE/RemMedia calls supported
bits 10-7 reserved
bit 6 Generic IOCTL call supported (command 13h)
(see AX=440Ch,440Dh)
bit 5 reserved
bit 4 device is special (use INT 29 "fast console output")
bit 3 device is CLOCK$
bit 2 device is NUL
bit 1 device is standard output
bit 0 device is standard input
Block device:
bit 15 clear
bit 14 IOCTL supported
bit 13 non-IBM format
bit 12 reserved
bit 11 OPEN/CLOSE/RemMedia calls supported
bit 10 reserved
bit 9 ??? set by DOS 3.3 DRIVER.SYS for "new" drives
bit 8 ??? set by DOS 3.3 DRIVER.SYS for "new" drives
bit 7 reserved
bit 6 Generic IOCTL call supported (command 13h)
implies support for commands 17h and 18h
(see AX=440Ch,440Dh,440Eh,440Fh)
bits 5-2 reserved
bit 1 driver supports 32-bit sector addressing
bit 0 reserved
06h WORD device strategy entry point
call with ES:BX -> request header (see INT 2F/AX=1510h)
08h WORD device interrupt entry point
0Ah 8 BYTEs blank-padded character device name
12h WORD (CD-ROM driver) reserved, must be 0000h
14h BYTE (CD-ROM driver) drive letter (must initially be 00h)
15h BYTE (CD-ROM driver) number of units
16h 6 BYTEs (CD-ROM driver) signature 'MSCDnn' where 'nn' is version
(currently '00')