MS DOS Device Drivers

MS DOS Device Drivers
• Sources of Information
• Device driver basics
• Structure and internal routines
Sources of information
John Angermeyer and Kevin Jaeger, MS-DOS Developer’s
Guide, Howard W. Sams, Indianapolis, 1986
Ray Duncan, Advanced MS-DOS, Microsoft Press,
Redmond, Washington, 1986
Robert Lai, Writing MS-DOS Device Drivers, AddisonWesley, Reading, Massachusetts, 1992
Device driver basics
Operating System modules that control hw
Isolate higher levels from hw specifics
Standard interface with OS
Installable at boot time as a “chain”
• Not necessary to modify the OS
• Similar to Unix/Xenix/Linux device drivers
• Two types: Block and Character
General Structure
Device Header
Driver Data Storage
Strategy Routine
Interrupt Entry
Command Handlers
Interrupt Service Routine
Initialization Code and Driver Data Buffers
Device Header
• 18-byte block at beginning of every device
00H Link to next driver, offset
02H Link to next driver, segment
04H Device attribute word
06H Strategy entry point, offset
08H Interrupt entry point, offset
0AH Logical name (8 bytes) if character
device. Number of units (1 byte) if block
device (other 7 bytes reserved)
Strategy Routine
• Called by MS-DOS when driver is first loaded
• Called by MS-DOS whenever I/O request is
issued to device
• Request call includes a pointer to a request
header; driver saves pointer and returns to
• Request header includes command code and
other information
Interrupt Routine
Called after the strategy routine
Implements the device driver proper
Performs the actual I/O operations
Collection of subroutines to implement
various functions (read, write, …)
• Centralized entry routine saves registers and
sets up driver ops
• Centralized exit routine restores registers and
sets status and error codes
Sample Command Codes
Driver Initialization
Media Check

similar documents