Author: cgutman
Date: Thu Aug 19 23:26:44 2010
New Revision: 48570
URL:
http://svn.reactos.org/svn/reactos?rev=48570&view=rev
Log:
[NTOSKRNL]
- Add a special case to IopInitializeDevice for raw devices
- Call IopInitializeDevice to set up our device node and ready it to start
- Fixes assertions hit by ACPI and PCIX
Modified:
trunk/reactos/ntoskrnl/io/pnpmgr/pnpmgr.c
Modified: trunk/reactos/ntoskrnl/io/pnpmgr/pnpmgr.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/pnpmgr/pnpmgr.…
==============================================================================
--- trunk/reactos/ntoskrnl/io/pnpmgr/pnpmgr.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/io/pnpmgr/pnpmgr.c [iso-8859-1] Thu Aug 19 23:26:44 2010
@@ -64,6 +64,13 @@
{
PDEVICE_OBJECT Fdo;
NTSTATUS Status;
+
+ if (!DriverObject)
+ {
+ /* Special case for bus driven devices */
+ DeviceNode->Flags |= DNF_ADDED;
+ return STATUS_SUCCESS;
+ }
if (!DriverObject->DriverExtension->AddDevice)
{
@@ -1897,11 +1904,15 @@
{
/* We don't need to worry about loading the driver because we're
* being driven in raw mode so our parent must be loaded to get here */
- Status = IopStartDevice(DeviceNode);
- if (!NT_SUCCESS(Status))
- {
- DPRINT1("IopStartDevice(%wZ) failed with status 0x%08x\n",
- &DeviceNode->InstancePath, Status);
+ Status = IopInitializeDevice(DeviceNode, NULL);
+ if (NT_SUCCESS(Status))
+ {
+ Status = IopStartDevice(DeviceNode);
+ if (!NT_SUCCESS(Status))
+ {
+ DPRINT1("IopStartDevice(%wZ) failed with status 0x%08x\n",
+ &DeviceNode->InstancePath, Status);
+ }
}
}
else