1
0
mirror of https://github.com/winfsp/winfsp.git synced 2026-06-26 06:18:21 -05:00

sys: introduce private NTSTATUS codes FSP_STATUS_POST_IOQ* and ensure that Irp is not touched after STATUS_PENDING

This commit is contained in:
Bill Zissimopoulos
2016-01-17 14:12:05 -08:00
parent 9c7d9c5944
commit 0bedee7d5f
7 changed files with 63 additions and 41 deletions
+3 -5
View File
@@ -312,7 +312,7 @@ static NTSTATUS FspFsvolCreate(
RtlCopyMemory(Request->Buffer + Request->Req.Create.SecurityDescriptor.Offset,
SecurityDescriptor, SecurityDescriptorSize);
return STATUS_PENDING;
return FSP_STATUS_IOQ_POST;
}
NTSTATUS FspFsvolCreatePrepare(
@@ -380,8 +380,7 @@ NTSTATUS FspFsvolCreatePrepare(
/* repost the IRP to retry later */
FSP_FSVOL_DEVICE_EXTENSION *FsvolDeviceExtension =
FspFsvolDeviceExtension(IrpSp->DeviceObject);
if (FspIoqPostIrpBestEffort(FsvolDeviceExtension->Ioq, Irp, &Result))
Result = STATUS_PENDING;
FspIoqPostIrpBestEffort(FsvolDeviceExtension->Ioq, Irp, &Result);
return Result;
}
@@ -593,8 +592,7 @@ VOID FspFsvolCreateComplete(
* Note that it is still possible for this request to not be delivered,
* if the volume device Ioq is stopped or if the IRP is canceled.
*/
if (FspIoqPostIrpBestEffort(FsvolDeviceExtension->Ioq, Irp, &Result))
Result = STATUS_PENDING;
FspIoqPostIrpBestEffort(FsvolDeviceExtension->Ioq, Irp, &Result);
}
else
{