[NTOSKRNL_VISTA][XDK] Implement IoSetMasterIrpStatus
[reactos.git] / sdk / lib / drivers / ntoskrnl_vista / io.c
index 3f58ce9..5008f7a 100644 (file)
@@ -107,4 +107,25 @@ IoGetIoPriorityHint(
     _In_ PIRP Irp)
 {
     return IoPriorityNormal;
-}
\ No newline at end of file
+}
+
+NTKERNELAPI
+VOID
+IoSetMasterIrpStatus(
+    _Inout_ PIRP MasterIrp,
+    _In_ NTSTATUS Status)
+{
+    NTSTATUS MasterStatus = MasterIrp->IoStatus.Status;
+
+    if (Status == STATUS_FT_READ_FROM_COPY)
+    {
+        return;
+    }
+
+    if ((Status == STATUS_VERIFY_REQUIRED) ||
+        (MasterStatus == STATUS_SUCCESS && !NT_SUCCESS(Status)) ||
+        (!NT_SUCCESS(MasterStatus) && !NT_SUCCESS(Status) && Status > MasterStatus))
+    {
+        MasterIrp->IoStatus.Status = Status;
+    }
+}