Do always set the UserIosb of an irp in IoSecondStageCompletion.

svn path=/trunk/; revision=14964
This commit is contained in:
Hartmut Birr 2005-05-03 21:42:35 +00:00
parent f2b9954c3f
commit 5255b326ec

View file

@ -1265,14 +1265,18 @@ IoSecondStageCompletion(PKAPC Apc,
}
Irp->MdlAddress = NULL;
if (Irp->UserIosb)
{
/* Save the IOSB Information */
*Irp->UserIosb = Irp->IoStatus;
}
/* Check for Success but allow failure for Async IRPs */
if (NT_SUCCESS(Irp->IoStatus.Status) ||
(Irp->PendingReturned &&
!(Irp->Flags & IRP_SYNCHRONOUS_API) &&
(FileObject == NULL || FileObject->Flags & FO_SYNCHRONOUS_IO)))
{
/* Save the IOSB Information */
*Irp->UserIosb = Irp->IoStatus;
/* Check if there's an event */
if (Irp->UserEvent)
@ -1361,9 +1365,7 @@ IoSecondStageCompletion(PKAPC Apc,
/* Check for SYNC IRP */
if (Irp->Flags & IRP_SYNCHRONOUS_API)
{
/* Set the status in this case only */
*Irp->UserIosb = Irp->IoStatus;
/* Signal our event if we have one */
if (Irp->UserEvent)
{