Commit in reactos/ntoskrnl/io on MAIN
cleanup.c+141.53 -> 1.54
irp.c+1-141.71 -> 1.72
+15-14
2 modified files
Move the I/O completion port setting to second stage and fix the async I/O
test. Thanks to Alex Ionescu for explaining this stuff to me.

reactos/ntoskrnl/io
cleanup.c 1.53 -> 1.54
diff -u -r1.53 -r1.54
--- cleanup.c	23 Dec 2004 12:34:59 -0000	1.53
+++ cleanup.c	26 Dec 2004 21:18:34 -0000	1.54
@@ -300,5 +300,19 @@
 
    }
 
+   if (NULL != IoStack->FileObject
+       && NULL != IoStack->FileObject->CompletionContext
+       && (0 != (Irp->Flags & IRP_SYNCHRONOUS_API)
+           || 0 == (IoStack->FileObject->Flags & FO_SYNCHRONOUS_IO)))
+   {
+      PFILE_OBJECT FileObject = IoStack->FileObject;
+      IoSetIoCompletion(FileObject->CompletionContext->Port,
+                        FileObject->CompletionContext->Key,
+                        Irp->Overlay.AsynchronousParameters.UserApcContext,
+                        Irp->IoStatus.Status,
+                        Irp->IoStatus.Information,
+                        FALSE);
+   }
+
    IoFreeIrp(Irp);
 }

reactos/ntoskrnl/io
irp.c 1.71 -> 1.72
diff -u -r1.71 -r1.72
--- irp.c	26 Dec 2004 15:55:14 -0000	1.71
+++ irp.c	26 Dec 2004 21:18:34 -0000	1.72
@@ -1,4 +1,4 @@
-/* $Id: irp.c,v 1.71 2004/12/26 15:55:14 gvg Exp $
+/* $Id: irp.c,v 1.72 2004/12/26 21:18:34 gvg Exp $
  *
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
@@ -447,19 +447,6 @@
    //Windows NT File System Internals, page 154
    OriginalFileObject = Irp->Tail.Overlay.OriginalFileObject;
 
-   if (NULL != Stack->FileObject
-       && NULL != Stack->FileObject->CompletionContext
-       && Irp->PendingReturned)
-   {
-      PFILE_OBJECT FileObject = Stack->FileObject;
-      IoSetIoCompletion(FileObject->CompletionContext->Port,
-                        FileObject->CompletionContext->Key,
-                        Irp->Overlay.AsynchronousParameters.UserApcContext,
-                        Irp->IoStatus.Status,
-                        Irp->IoStatus.Information,
-                        FALSE);
-   }
-
    if (Irp->PendingReturned || KeGetCurrentIrql() == DISPATCH_LEVEL)
    {
       BOOLEAN bStatus;
CVSspam 0.2.8