Index: /trunk/src/VBox/Additions/WINNT/MouseFilter/VBoxMouse.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/MouseFilter/VBoxMouse.cpp	(revision 30426)
+++ /trunk/src/VBox/Additions/WINNT/MouseFilter/VBoxMouse.cpp	(revision 30427)
@@ -471,5 +471,10 @@
     // to be set.
     //
-    KeSetEvent(event, 0, FALSE);
+    // If the lower driver didn't return STATUS_PENDING, we don't need to
+    // set the event because we won't be waiting on it.
+    // This optimization avoids grabbing the dispatcher lock and improves perf.
+    //
+    if (Irp->PendingReturned == TRUE)
+        KeSetEvent(event, 0, FALSE);
 
     return STATUS_MORE_PROCESSING_REQUIRED;
@@ -841,11 +846,14 @@
                Executive, // Waiting for reason of a driver
                KernelMode, // Waiting in kernel mode
-               FALSE, // No allert
+               FALSE, // No alert
                NULL); // No timeout
+
+            // Transfer the status from the IOSB
+            status = Irp->IoStatus.Status;
         }
 
         dprintf(("VBoxMouse_PnP: Status: %x, irp status: %x\n", Irp->IoStatus.Status));
 
-        if (NT_SUCCESS(status) && NT_SUCCESS(Irp->IoStatus.Status)) {
+        if (NT_SUCCESS(status)) {
             devExt->Started = TRUE;
             devExt->Removed = FALSE;
@@ -858,5 +866,4 @@
         //
         Irp->IoStatus.Status = status;
-        Irp->IoStatus.Information = 0;
         IoCompleteRequest(Irp, IO_NO_INCREMENT);
 
