[HALX86] Report HAL root device to the stack before passing it to the driver
authorVictor Perevertkin <victor.perevertkin@reactos.org>
Wed, 24 Jun 2020 16:37:20 +0000 (19:37 +0300)
committerVictor Perevertkin <victor.perevertkin@reactos.org>
Fri, 21 Aug 2020 05:19:53 +0000 (08:19 +0300)
PnP manager now correctly delays device actions if needed, so this can
be safely done as a one operation (IoReportDetectedDevice itself creates
a PDO for us if not passed)

CORE-10456

hal/halx86/acpi/halpnpdd.c
hal/halx86/legacy/halpnpdd.c

index 0719e7e..beec119 100644 (file)
@@ -862,14 +862,15 @@ HalpDriverEntry(IN PDRIVER_OBJECT DriverObject,
     DriverObject->MajorFunction[IRP_MJ_POWER] = HalpDispatchPower;
     DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = HalpDispatchWmi;
 
-    /* Create the PDO */
-    Status = IoCreateDevice(DriverObject,
-                            0,
-                            NULL,
-                            FILE_DEVICE_CONTROLLER,
-                            0,
-                            FALSE,
-                            &TargetDevice);
+    /* Create the PDO and tell the PnP manager about us*/
+    Status = IoReportDetectedDevice(DriverObject,
+                                    InterfaceTypeUndefined,
+                                    -1,
+                                    -1,
+                                    NULL,
+                                    NULL,
+                                    FALSE,
+                                    &TargetDevice);
     if (!NT_SUCCESS(Status))
         return Status;
 
@@ -883,16 +884,6 @@ HalpDriverEntry(IN PDRIVER_OBJECT DriverObject,
         return Status;
     }
 
-    /* Tell the PnP manager about us */
-    Status = IoReportDetectedDevice(DriverObject,
-                                    InterfaceTypeUndefined,
-                                    -1,
-                                    -1,
-                                    NULL,
-                                    NULL,
-                                    FALSE,
-                                    &TargetDevice);
-
     /* Return to kernel */
     return Status;
 }
index 5f84e03..4bf1ff3 100644 (file)
@@ -888,14 +888,15 @@ HalpDriverEntry(IN PDRIVER_OBJECT DriverObject,
     DriverObject->MajorFunction[IRP_MJ_POWER] = HalpDispatchPower;
     DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = HalpDispatchWmi;
 
-    /* Create the PDO */
-    Status = IoCreateDevice(DriverObject,
-                            0,
-                            NULL,
-                            FILE_DEVICE_CONTROLLER,
-                            0,
-                            FALSE,
-                            &TargetDevice);
+    /* Create the PDO and tell the PnP manager about us*/
+    Status = IoReportDetectedDevice(DriverObject,
+                                    InterfaceTypeUndefined,
+                                    -1,
+                                    -1,
+                                    NULL,
+                                    NULL,
+                                    FALSE,
+                                    &TargetDevice);
     if (!NT_SUCCESS(Status))
         return Status;
 
@@ -909,16 +910,6 @@ HalpDriverEntry(IN PDRIVER_OBJECT DriverObject,
         return Status;
     }
 
-    /* Tell the PnP manager about us */
-    Status = IoReportDetectedDevice(DriverObject,
-                                    InterfaceTypeUndefined,
-                                    -1,
-                                    -1,
-                                    NULL,
-                                    NULL,
-                                    FALSE,
-                                    &TargetDevice);
-
     /* Return to kernel */
     return Status;
 }