Format of device driver request header |
Offset | Size | Description | |||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
00h |
BYTE |
length of request header | |||||||||||||||||||||||||||||||||||||||||||||
01h |
BYTE |
subunit within device driver | |||||||||||||||||||||||||||||||||||||||||||||
02h |
BYTE |
command code (see #02595) | |||||||||||||||||||||||||||||||||||||||||||||
03h |
WORD |
status (filled in by device driver) (see #02596) | |||||||||||||||||||||||||||||||||||||||||||||
---DOS--- |
|||||||||||||||||||||||||||||||||||||||||||||||
05h |
4 BYTEs |
reserved (unused in DOS 2.x and 3.x) | |||||||||||||||||||||||||||||||||||||||||||||
09h |
DWORD |
(European MS-DOS 4.0 only) pointer to next request header in device's request queue |
|||||||||||||||||||||||||||||||||||||||||||||
(other versions) reserved (unused in DOS 2.x and 3.x) |
|||||||||||||||||||||||||||||||||||||||||||||||
---STARLITE architecture--- |
|||||||||||||||||||||||||||||||||||||||||||||||
05h |
DWORD |
pointer to next request header | |||||||||||||||||||||||||||||||||||||||||||||
09h |
4 BYTEs |
reserved | |||||||||||||||||||||||||||||||||||||||||||||
---command code 00h--- |
|||||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
(ret) | number of units | ||||||||||||||||||||||||||||||||||||||||||||
0Eh |
DWORD |
(call) |
(European MS-DOS 4.0 only) pointer to DOS device helper function (see #02599) |
||||||||||||||||||||||||||||||||||||||||||||
(DOS 5+) pointer past end of memory available to driver |
|||||||||||||||||||||||||||||||||||||||||||||||
(ret) | address of first free byte following driver | ||||||||||||||||||||||||||||||||||||||||||||||
12h |
DWORD |
(call) | pointer to commandline arguments | ||||||||||||||||||||||||||||||||||||||||||||
(ret) | pointer to BPB array (block drivers) or 0000h:0000h (character drivers) | ||||||||||||||||||||||||||||||||||||||||||||||
16h |
BYTE |
(DOS 3.0+) drive number for first unit of block driver (0=A) | |||||||||||||||||||||||||||||||||||||||||||||
---European MS-DOS 4.0--- |
|||||||||||||||||||||||||||||||||||||||||||||||
17h |
DWORD |
pointer to function to save registers on stack | |||||||||||||||||||||||||||||||||||||||||||||
---DOS 5+ --- |
|||||||||||||||||||||||||||||||||||||||||||||||
17h |
WORD |
(ret) | error-message flag 0001h MS-DOS should display error msg on init failure |
||||||||||||||||||||||||||||||||||||||||||||
---command code 01h--- |
|||||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
media descriptor | |||||||||||||||||||||||||||||||||||||||||||||
0Eh |
BYTE |
(ret) | media status
|
||||||||||||||||||||||||||||||||||||||||||||
0Fh |
DWORD |
(ret) | (DOS 3.0+) pointer to previous volume
ID if the OPEN/CLOSE/RM bit in device header is set and disk changed
|
||||||||||||||||||||||||||||||||||||||||||||
---command code 02h--- |
|||||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
media descriptor | |||||||||||||||||||||||||||||||||||||||||||||
0Eh |
DWORD |
transfer address scratch sector if NON-IBM FORMAT bit in device header set first FAT sector otherwise |
|||||||||||||||||||||||||||||||||||||||||||||
12h |
DWORD |
pointer to BPB (set by driver) (see #01663 at INT 21/AH=53h) | |||||||||||||||||||||||||||||||||||||||||||||
---command codes 03h, 0Ch--- |
|||||||||||||||||||||||||||||||||||||||||||||||
(see also INT 21/AX=4402h"DOS 2+",INT 21/AX=4403h"DOS") |
|||||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
media descriptor (block devices only) | |||||||||||||||||||||||||||||||||||||||||||||
0Eh |
DWORD |
transfer address | |||||||||||||||||||||||||||||||||||||||||||||
12h |
WORD |
(call) | number of bytes to read/write | ||||||||||||||||||||||||||||||||||||||||||||
(ret) | actual number of bytes read or written | ||||||||||||||||||||||||||||||||||||||||||||||
---command codes 04h, 08h, 09h (except Compaq DOS 3.31, DR DOS 6)--- |
|||||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
media descriptor (block devices only) | |||||||||||||||||||||||||||||||||||||||||||||
0Eh |
DWORD |
transfer address | |||||||||||||||||||||||||||||||||||||||||||||
12h |
WORD |
byte count (character devices) or sector count (block devices) | |||||||||||||||||||||||||||||||||||||||||||||
14h |
WORD |
starting sector number (block devices only) | |||||||||||||||||||||||||||||||||||||||||||||
16h |
DWORD |
(DOS 3.0+) pointer to volume ID if error 0Fh returned | |||||||||||||||||||||||||||||||||||||||||||||
1Ah |
DWORD |
(DOS 4.0+) 32-bit starting sector number (block devices with device attribute word bit 1 set only) if starting sector number above is FFFFh (see INT 21/AH=52h) | |||||||||||||||||||||||||||||||||||||||||||||
---command codes 04h, 08h, 09h (Compaq DOS 3.31, DR DOS 6)--- |
|||||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
media descriptor (block devices only) | |||||||||||||||||||||||||||||||||||||||||||||
0Eh |
DWORD |
transfer address | |||||||||||||||||||||||||||||||||||||||||||||
12h |
WORD |
byte count (character devices) or sector count (block devices) | |||||||||||||||||||||||||||||||||||||||||||||
14h |
DWORD |
32-bit starting sector number (block
devices only)
|
|||||||||||||||||||||||||||||||||||||||||||||
---command code 05h--- |
|||||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
byte read from device if BUSY bit clear on return | |||||||||||||||||||||||||||||||||||||||||||||
---command codes 06h, 07h, 0Ah, 0Bh, 0Dh, 0Eh, 0Fh--- |
|||||||||||||||||||||||||||||||||||||||||||||||
no further fields |
|||||||||||||||||||||||||||||||||||||||||||||||
---command code 10h--- |
|||||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
unused | |||||||||||||||||||||||||||||||||||||||||||||
0Eh |
DWORD |
transfer address | |||||||||||||||||||||||||||||||||||||||||||||
12h |
WORD |
(call) | number of bytes to write | ||||||||||||||||||||||||||||||||||||||||||||
(ret) | actual number of bytes written | ||||||||||||||||||||||||||||||||||||||||||||||
---command codes 11h, 12h--- |
|||||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
reserved | |||||||||||||||||||||||||||||||||||||||||||||
---command code 14h--- |
|||||||||||||||||||||||||||||||||||||||||||||||
no further fields |
|||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||
---command code 15h--- |
|||||||||||||||||||||||||||||||||||||||||||||||
no further fields |
|||||||||||||||||||||||||||||||||||||||||||||||
---command codes 13h, 19h--- |
|||||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
category code
|
|||||||||||||||||||||||||||||||||||||||||||||
0Eh |
BYTE |
function code
|
|||||||||||||||||||||||||||||||||||||||||||||
0Fh |
WORD |
copy of DS at time of IOCTL call
(apparently unused in DOS 3.3) SI contents (European MS-DOS 4.0) |
|||||||||||||||||||||||||||||||||||||||||||||
11h |
WORD |
offset of device driver header (see #01646) DI contents (European MS-DOS 4.0) |
|||||||||||||||||||||||||||||||||||||||||||||
13h |
DWORD |
pointer to parameter block from INT 21/AX=440Ch or AX=440Dh | |||||||||||||||||||||||||||||||||||||||||||||
---command codes 80h, 82h--- |
|||||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
addressing mode
|
|||||||||||||||||||||||||||||||||||||||||||||
0Eh |
DWORD |
transfer address (ignored for command 82h) | |||||||||||||||||||||||||||||||||||||||||||||
12h |
WORD |
number of sectors to read (if 0 for command 82h, request is an advisory seek) | |||||||||||||||||||||||||||||||||||||||||||||
14h |
DWORD |
starting sector number logical sector number in HSG mode frame/second/minute/unused in Red Book mode (HSG sector = minute * 4500 + second * 75 + frame - 150) |
|||||||||||||||||||||||||||||||||||||||||||||
18h |
BYTE |
data read mode
|
|||||||||||||||||||||||||||||||||||||||||||||
19h |
BYTE |
interleave size (number of sectors stored consecutively) | |||||||||||||||||||||||||||||||||||||||||||||
1Ah |
BYTE |
interleave skip factor (number of sectors between consecutive portions) | |||||||||||||||||||||||||||||||||||||||||||||
---command code 83h--- |
|||||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
addressing mode
|
|||||||||||||||||||||||||||||||||||||||||||||
0Eh |
DWORD |
transfer address (ignored) | |||||||||||||||||||||||||||||||||||||||||||||
12h |
WORD |
number of sectors to read (ignored) | |||||||||||||||||||||||||||||||||||||||||||||
14h |
DWORD |
starting sector number (see also above) | |||||||||||||||||||||||||||||||||||||||||||||
---command code 84h--- |
|||||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
addressing mode
|
|||||||||||||||||||||||||||||||||||||||||||||
0Eh |
DWORD |
starting sector number (see also above) | |||||||||||||||||||||||||||||||||||||||||||||
12h |
DWORD |
number of sectors to play | |||||||||||||||||||||||||||||||||||||||||||||
---command codes 85h, 88h--- |
|||||||||||||||||||||||||||||||||||||||||||||||
no further fields |
|||||||||||||||||||||||||||||||||||||||||||||||
---command codes 86h, 87h--- |
|||||||||||||||||||||||||||||||||||||||||||||||
0Dh |
BYTE |
addressing mode
|
|||||||||||||||||||||||||||||||||||||||||||||
0Eh |
DWORD |
transfer address (ignored in write mode 0) | |||||||||||||||||||||||||||||||||||||||||||||
12h |
WORD |
number of sectors to write | |||||||||||||||||||||||||||||||||||||||||||||
14h |
DWORD |
starting sector number (also see above) | |||||||||||||||||||||||||||||||||||||||||||||
18h |
BYTE |
write mode
|
|||||||||||||||||||||||||||||||||||||||||||||
19h |
BYTE |
interleave size (number of sectors stored consecutively) | |||||||||||||||||||||||||||||||||||||||||||||
1Ah |
BYTE |
interleave skip factor (number of sectors between consecutive portions) |