Chapter 2  Layered I/O, IRPs, and I/O Objects

This chapter contains the following information:

2.1  End-user I/O Requests and NT File Objects

2.1.1  Points to Consider about User I/O Requests

2.2  IRPs and Driver-specific I/O Stack Locations

2.2.1  Points to Consider about Processing IRPs

2.3  NT Driver Objects and Standard Driver Routines

2.3.1  NT Object Opacity

2.3.2  Driver Object Entry Points

2.3.3  Other Standard NT Driver Routines

2.3.4  Points to Consider about NT Standard Driver Routines

2.4  Device Configurations and Layered NT Drivers

2.4.1  Interactive Devices

2.4.1.1  Video Adapter Configurations and Driver Layers

2.4.1.2  Keyboard and Mouse Configurations and Driver Layers

2.4.2  Parallel and Serial Devices and Driver Layers

2.4.3  Sound Device and Driver Layers

2.4.4  Mass-storage Devices and Driver Layers

2.4.4.1  AT Disk Devices

2.4.4.2  Floppy Devices

2.4.4.3  SCSI Devices

2.4.5  Points to Consider about Adding NT Drivers

2.5  NT Objects with Device, Configuration, or Layer Dependencies

2.5.1  Video Driver’s Device Objects

2.5.2  Keyboard and Mouse Drivers’ Device Objects

2.5.3  Parallel and Serial Drivers’ Device Objects

2.5.4  Sound Driver’s Device Objects

2.5.5  AT Disk Driver’s Device and Controller Objects

2.5.6  Floppy Driver’s Device Objects

2.5.7  SCSI Drivers’ Device Objects

2.5.8  Points to Consider about NT Objects

Every operating system has an implicit or explicit I/O model for handling the flow of data to and from peripheral devices. The Windows NT® executive I/O model has the following general features:

·The NT I/O Manager presents a consistent interface to all kernel-mode drivers, including device, intermediate, and file system drivers. All I/O requests to NT drivers are sent as I/O request packets (IRPs).

·I/O operations are layered. That is, the I/O Manager exports system services, which user-mode protected subsystems call to carry out I/O operations on behalf of their applications and/or end users. The I/O Manager intercepts these calls, sets up one or more IRPs, and routes them through possibly layered NT drivers to physical devices.

·The I/O Manager defines a set of standard routines, some optional, for NT driver writers to implement. All NT drivers follow a relatively consistent implementation model, given the differences among peripheral devices and the differing functionality required of physical, virtual, logical, and file system drivers.

·Like NT itself, NT drivers are object-based. Drivers, their devices, and system hardware are represented as NT objects. The I/O Manager and other NT components export kernel-mode support routines that NT drivers can call to get work done by manipulating the appropriate objects.

This chapter introduces the NT I/O model, supplying an overview of how kernel-mode drivers fit into the system, of how NT drivers process IRPs, of the system-defined standard driver routines, of common device configurations and corresponding layered drivers, and of the NT objects that represent devices, drivers, and system I/O hardware.