Better handle of wrong arguments in IoRegisterDeviceInterface
Modified: trunk/reactos/ntoskrnl/io/deviface.c

Modified: trunk/reactos/ntoskrnl/io/deviface.c
--- trunk/reactos/ntoskrnl/io/deviface.c	2005-05-05 15:38:32 UTC (rev 15001)
+++ trunk/reactos/ntoskrnl/io/deviface.c	2005-05-05 15:39:09 UTC (rev 15002)
@@ -585,6 +585,12 @@
    ULONG i;
    NTSTATUS Status;
    
+   if (!(PhysicalDeviceObject->Flags & DO_BUS_ENUMERATED_DEVICE))
+   {
+     DPRINT("PhysicalDeviceObject 0x%p is not a valid Pdo\n", PhysicalDeviceObject);
+     return STATUS_INVALID_PARAMETER_1;
+   }
+   
    Status = RtlStringFromGUID(InterfaceClassGuid, &GuidString);
    if (!NT_SUCCESS(Status))
    {
@@ -606,6 +612,7 @@
    ASSERT(PdoNameInfo->Name.Length);
    
    /* Create base key name for this interface: HKLM\SYSTEM\CurrentControlSet\DeviceClasses\{GUID}\##?#ACPI#PNP0501#1#{GUID} */
+   ASSERT(PhysicalDeviceObject->DeviceObjectExtension->DeviceNode);
    InstancePath = &PhysicalDeviceObject->DeviceObjectExtension->DeviceNode->InstancePath;
    BaseKeyName.Length = wcslen(BaseKeyString) * sizeof(WCHAR);
    BaseKeyName.MaximumLength = BaseKeyName.Length