IRP that completed with a failure status after being marked pendi- ng

Hi,

I have a question regarding what happens to an IRP when that was previously
marked as pending fails, and is completed with a status other than
STATUS_SUCCESS.

The driver is not layered in this respect, and the IRP is sent via an
asynchronous IOCTL from a WIN32 app. The driver validates the IRP and marks
as pending. Latter the driver determines that the IRP cannot be completed
successfully and completes with code such as this

IoSetCancelRoutine(pAsyncIRP,NULL);

pAsyncIRP->IoStatus.Status = STATUS_SUCCESS;
pAsyncIRP->IoStatus.Information = 0;

IoCompleteRequest(pAsyncIRP, IO_NO_INCREMENT);

This works fine, my question is what happens when the same IRP is completed
with a status such as

pAsyncIRP->IoStatus.Status = STATUS_HOST_UNREACHABLE;
pAsyncIRP->IoStatus.Information = 0;

This IRP never seems to complete. I would appreciate it if someone could
describe what the i/o manager does with this IRP.

Thanks in advance,

Rod.


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com