The IRP with all of its parameters can be put on a queue if the I/O request cannot be performed immediately. I/O completion is reported back to the I/O manager by passing its address to a routine for that purpose, IoCompleteRequest.
In situations where an I/O operation cannot be carried out immediately, the IRP with all its details can be added to a waiting list. The I/O manager is then notified of completion through the use of a specific procedure, IoCompleteRequest, which passes the address of the completed operation.