9.1.2 Basic DpcForIsr Requirements

On entry, the DpcForIsr is given pointers to the current IRP, target device object, and context information, as shown by the declaration, which were passed in the ISR's call to IoRequestDpc.

A DpcForIsr routine is responsible, in general, for the following:

·Completing the I/O processing requested by the IRP for the target device object, using the context that was set up by the ISR

·Seeing that the next IRP is processed as soon as possible, usually by calling IoStartNextPacket or IoStartNextPacketByKey so the driver's StartIo routine will start the next requested I/O operation on the target device

If an NT device driver manages its own queueing, its DpcForIsr routine must have some way of notifying the driver to dequeue the next IRP and begin device I/O processing for the next request.

·Setting the I/O status block in the input IRP and calling IoCompleteRequest with this just completed request

For more detailed information about the functionality of DpcForIsr routines, see also Section 9.2