I/O Request Packets (IRPs)
Almost all I/O under Windows 2000 is packet-driven. Each separate I/O transaction is described by a work order that tells the driver what to do and tracks the progress of the request through the I/O subsystem. These work orders take the form of a data structure called an I/O Request Packet (IRP), and this section describes their use and purpose.
With each user-mode request for I/O, the I/O Manager allocates an IRP from nonpaged system memory. Based on the file handle and I/O function requested by the user, the I/O Manager passes the IRP to the appropriate driver dispatch routine.
The dispatch routine checks the parameters of the request, and if valid, passes the IRP to the driver's Start I/O routine.
The Start I/O routine ...