Author: cgutman Date: Sun Apr 11 18:21:29 2010 New Revision: 46842
URL: http://svn.reactos.org/svn/reactos?rev=46842&view=rev Log: [NTOSKRNL] - Store the allocated resources for reported devices
Modified: trunk/reactos/ntoskrnl/io/pnpmgr/pnpreport.c
Modified: trunk/reactos/ntoskrnl/io/pnpmgr/pnpreport.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/pnpmgr/pnprepor... ============================================================================== --- trunk/reactos/ntoskrnl/io/pnpmgr/pnpreport.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/io/pnpmgr/pnpreport.c [iso-8859-1] Sun Apr 11 18:21:29 2010 @@ -266,9 +266,6 @@ /* Write the resource information to the registry */ IopSetDeviceInstanceData(InstanceKey, DeviceNode);
- /* Close the instance key handle */ - ZwClose(InstanceKey); - /* If the caller didn't get the resources assigned for us, do it now */ if (!ResourceAssigned) { @@ -278,7 +275,19 @@ { Status = IopTranslateDeviceResources(DeviceNode, RequiredLength); if (NT_SUCCESS(Status)) + { Status = IopUpdateResourceMapForPnPDevice(DeviceNode); + if (NT_SUCCESS(Status) && DeviceNode->ResourceList) + { + RtlInitUnicodeString(&ValueName, L"AllocConfig"); + Status = ZwSetValueKey(InstanceKey, + &ValueName, + 0, + REG_RESOURCE_LIST, + DeviceNode->ResourceList, + CM_RESOURCE_LIST_SIZE(DeviceNode->ResourceList)); + } + } } IopDeviceNodeClearFlag(DeviceNode, DNF_ASSIGNING_RESOURCES);
@@ -286,9 +295,13 @@ if (!NT_SUCCESS(Status)) { DPRINT("Assigning resources failed: 0x%x\n", Status); + ZwClose(InstanceKey); return Status; } } + + /* Close the instance key handle */ + ZwClose(InstanceKey);
/* Report the device's enumeration to umpnpmgr */ IopQueueTargetDeviceEvent(&GUID_DEVICE_ENUMERATED,