Activate serial device interface only at the very end of IRP_MN_START_DEVICE
[reactos.git] / reactos / drivers / dd / serial / pnp.c
index 6729a21..e1a9bcf 100644 (file)
@@ -242,15 +242,6 @@ SerialPnpStartDevice(
                return Status;
        }
 
-       /* Activate serial interface */
-       Status = IoSetDeviceInterfaceState(&DeviceExtension->SerialInterfaceName, TRUE);
-       if (!NT_SUCCESS(Status))
-       {
-               DPRINT("Serial: IoSetDeviceInterfaceState() failed with status 0x%08x\n", Status);
-               IoDeleteSymbolicLink(&LinkName);
-               return Status;
-       }
-
        /* Connect interrupt and enable them */
        Status = IoConnectInterrupt(
                &DeviceExtension->Interrupt, SerialInterruptService,
@@ -274,7 +265,7 @@ SerialPnpStartDevice(
        if (NT_SUCCESS(Status))
        {
                /* Key = \Device\Serialx, Value = COMx */
-               ZwSetValueKey(hKey, &DeviceName, 0, REG_SZ, &ComPortBuffer, ComPort.Length + sizeof(WCHAR));
+               ZwSetValueKey(hKey, &DeviceName, 0, REG_SZ, ComPortBuffer, ComPort.Length + sizeof(WCHAR));
                ZwClose(hKey);
        }
 
@@ -289,6 +280,10 @@ SerialPnpStartDevice(
        DeviceExtension->MCR |= SR_MCR_DTR | SR_MCR_RTS;
        WRITE_PORT_UCHAR(SER_MCR(ComPortBase), DeviceExtension->MCR);
 
+       /* Activate serial interface */
+       IoSetDeviceInterfaceState(&DeviceExtension->SerialInterfaceName, TRUE);
+       /* We don't really care if the call succeeded or not... */
+
        return STATUS_SUCCESS;
 }