I/O Status Blocks
An I/O status block, which consists of an IO_STATUS_BLOCK structure, is a part of each IRP. An I/O status block serves two purposes:
It provides a higher-level driver's IoCompletion routine a way of determining whether the service worked when the IRP is completed.
It provides more information about why the service either worked or did not work.
Upon completion of an IRP, the Status field indicates whether the drivers that processed the IRP actually satisfied the request or failed the IRP with an error status. The Information field supplies the caller with more information about what actually occurred. For example, it contains the number of bytes actually transferred after a read or write operation.
For more information, see Setting the I/O Status Block in an IRP.