/* PRIVATE FUNCTIONS **********************************************************/
-VOID
-NTAPI
-HalpReportDetectedDevices(IN PDRIVER_OBJECT DriverObject,
- IN PVOID Context,
- IN ULONG Count)
-{
- PFDO_EXTENSION FdoExtension = Context;
- PPDO_EXTENSION PdoExtension;
- PDEVICE_OBJECT PdoDeviceObject;
- PDESCRIPTION_HEADER Wdrt;
- NTSTATUS Status;
-
- /* Create the PDO */
- Status = IoCreateDevice(DriverObject,
- sizeof(PDO_EXTENSION),
- NULL,
- FILE_DEVICE_BUS_EXTENDER,
- FILE_AUTOGENERATED_DEVICE_NAME,
- FALSE,
- &PdoDeviceObject);
- if (!NT_SUCCESS(Status))
- {
- /* Fail */
- DPRINT1("HAL: Could not create ACPI device object status=0x%08x\n", Status);
- return;
- }
-
- /* Setup the PDO device extension */
- PdoExtension = PdoDeviceObject->DeviceExtension;
- PdoExtension->ExtensionType = PdoExtensionType;
- PdoExtension->PhysicalDeviceObject = PdoDeviceObject;
- PdoExtension->ParentFdoExtension = FdoExtension;
- PdoExtension->PdoType = AcpiPdo;
-
- /* Add the PDO to the head of the list */
- PdoExtension->Next = FdoExtension->ChildPdoList;
- FdoExtension->ChildPdoList = PdoExtension;
-
- /* Initialization is finished */
- PdoDeviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
-
- /* Find the ACPI watchdog table */
- Wdrt = HalAcpiGetTable(0, 'TRDW');
- if (Wdrt)
- {
- /* FIXME: TODO */
- DPRINT1("You have an ACPI Watchdog. That's great! You should be proud ;-)\n");
- }
-
- /* This will load the ACPI driver (IO initialization will wait for this operation to finish) */
- IoInvalidateDeviceRelations(FdoExtension->PhysicalDeviceObject, BusRelations);
-}
-
NTSTATUS
NTAPI
HalpAddDevice(IN PDRIVER_OBJECT DriverObject,
{
NTSTATUS Status;
PFDO_EXTENSION FdoExtension;
+ PPDO_EXTENSION PdoExtension;
PDEVICE_OBJECT DeviceObject, AttachedDevice;
+ PDEVICE_OBJECT PdoDeviceObject;
+ PDESCRIPTION_HEADER Wdrt;
DPRINT("HAL: PnP Driver ADD!\n");
/* Save the attachment */
FdoExtension->AttachedDeviceObject = AttachedDevice;
- /* Register for reinitialization to report devices later */
- IoRegisterBootDriverReinitialization(DriverObject,
- HalpReportDetectedDevices,
- FdoExtension);
+ /* Create the PDO */
+ Status = IoCreateDevice(DriverObject,
+ sizeof(PDO_EXTENSION),
+ NULL,
+ FILE_DEVICE_BUS_EXTENDER,
+ FILE_AUTOGENERATED_DEVICE_NAME,
+ FALSE,
+ &PdoDeviceObject);
+ if (!NT_SUCCESS(Status))
+ {
+ /* Fail */
+ DPRINT1("HAL: Could not create ACPI device object status=0x%08x\n", Status);
+ return Status;
+ }
+
+ /* Setup the PDO device extension */
+ PdoExtension = PdoDeviceObject->DeviceExtension;
+ PdoExtension->ExtensionType = PdoExtensionType;
+ PdoExtension->PhysicalDeviceObject = PdoDeviceObject;
+ PdoExtension->ParentFdoExtension = FdoExtension;
+ PdoExtension->PdoType = AcpiPdo;
+
+ /* Add the PDO to the head of the list */
+ PdoExtension->Next = FdoExtension->ChildPdoList;
+ FdoExtension->ChildPdoList = PdoExtension;
+
+ /* Initialization is finished */
+ PdoDeviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
+
+ /* Find the ACPI watchdog table */
+ Wdrt = HalAcpiGetTable(0, 'TRDW');
+ if (Wdrt)
+ {
+ /* FIXME: TODO */
+ DPRINT1("You have an ACPI Watchdog. That's great! You should be proud ;-)\n");
+ }
/* Return status */
DPRINT("Device added %lx\n", Status);
/* PRIVATE FUNCTIONS **********************************************************/
-VOID
-NTAPI
-HalpReportDetectedDevices(IN PDRIVER_OBJECT DriverObject,
- IN PVOID Context,
- IN ULONG Count)
-{
- PFDO_EXTENSION FdoExtension = Context;
- PPDO_EXTENSION PdoExtension;
- PDEVICE_OBJECT PdoDeviceObject;
- NTSTATUS Status;
-
- /* Create the PDO */
- Status = IoCreateDevice(DriverObject,
- sizeof(PDO_EXTENSION),
- NULL,
- FILE_DEVICE_BUS_EXTENDER,
- FILE_AUTOGENERATED_DEVICE_NAME,
- FALSE,
- &PdoDeviceObject);
- if (!NT_SUCCESS(Status))
- {
- /* Fail */
- DPRINT1("HAL: Could not create ACPI device object status=0x%08x\n", Status);
- return;
- }
-
- /* Setup the PDO device extension */
- PdoExtension = PdoDeviceObject->DeviceExtension;
- PdoExtension->ExtensionType = PdoExtensionType;
- PdoExtension->PhysicalDeviceObject = PdoDeviceObject;
- PdoExtension->ParentFdoExtension = FdoExtension;
- PdoExtension->PdoType = AcpiPdo;
-
- /* Add the PDO to the head of the list */
- PdoExtension->Next = FdoExtension->ChildPdoList;
- FdoExtension->ChildPdoList = PdoExtension;
-
- /* Initialization is finished */
- PdoDeviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
-
- /* Invalidate device relations since we added a new device */
- IoInvalidateDeviceRelations(FdoExtension->PhysicalDeviceObject, BusRelations);
-}
-
NTSTATUS
NTAPI
HalpAddDevice(IN PDRIVER_OBJECT DriverObject,
{
NTSTATUS Status;
PFDO_EXTENSION FdoExtension;
+ PPDO_EXTENSION PdoExtension;
PDEVICE_OBJECT DeviceObject, AttachedDevice;
+ PDEVICE_OBJECT PdoDeviceObject;
// PDESCRIPTION_HEADER Wdrt;
DPRINT("HAL: PnP Driver ADD!\n");
/* Save the attachment */
FdoExtension->AttachedDeviceObject = AttachedDevice;
- /* Register for reinitialization to report devices later */
- IoRegisterBootDriverReinitialization(DriverObject,
- HalpReportDetectedDevices,
- FdoExtension);
+ /* Create the PDO */
+ Status = IoCreateDevice(DriverObject,
+ sizeof(PDO_EXTENSION),
+ NULL,
+ FILE_DEVICE_BUS_EXTENDER,
+ FILE_AUTOGENERATED_DEVICE_NAME,
+ FALSE,
+ &PdoDeviceObject);
+ if (!NT_SUCCESS(Status))
+ {
+ /* Fail */
+ DPRINT1("HAL: Could not create ACPI device object status=0x%08x\n", Status);
+ return Status;
+ }
+
+ /* Setup the PDO device extension */
+ PdoExtension = PdoDeviceObject->DeviceExtension;
+ PdoExtension->ExtensionType = PdoExtensionType;
+ PdoExtension->PhysicalDeviceObject = PdoDeviceObject;
+ PdoExtension->ParentFdoExtension = FdoExtension;
+ PdoExtension->PdoType = AcpiPdo;
+
+ /* Add the PDO to the head of the list */
+ PdoExtension->Next = FdoExtension->ChildPdoList;
+ FdoExtension->ChildPdoList = PdoExtension;
+
+ /* Initialization is finished */
+ PdoDeviceObject->Flags &= ~DO_DEVICE_INITIALIZING;
/* Return status */
DPRINT("Device added %lx\n", Status);