[NTOSKRNL]
[reactos.git] / reactos / drivers / input / mouclass / mouclass.c
index 070dc50..6fb47b3 100644 (file)
@@ -582,7 +582,7 @@ DestroyPortDriver(
 
        /* Remove from ClassDeviceExtension->ListHead list */
        KeAcquireSpinLock(&ClassDeviceExtension->ListSpinLock, &OldIrql);
-       RemoveHeadList(DeviceExtension->ListEntry.Blink);
+       RemoveEntryList(&DeviceExtension->ListEntry);
        KeReleaseSpinLock(&ClassDeviceExtension->ListSpinLock, OldIrql);
 
        /* Remove entry from HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\[DeviceBaseName] */
@@ -841,7 +841,6 @@ ClassPnp(
                        IoCompleteRequest(Irp, IO_NO_INCREMENT);
                        return Status;
                        
-               case IRP_MN_REMOVE_DEVICE:
                case IRP_MN_STOP_DEVICE:
                        if (DeviceExtension->FileHandle)
                        {
@@ -850,6 +849,17 @@ ClassPnp(
                        }
                        Status = STATUS_SUCCESS;
                        break;
+            
+        case IRP_MN_REMOVE_DEVICE:
+            if (DeviceExtension->FileHandle)
+                       {
+                               ZwClose(DeviceExtension->FileHandle);
+                               DeviceExtension->FileHandle = NULL;
+                       }
+            IoSkipCurrentIrpStackLocation(Irp);
+                   Status = IoCallDriver(DeviceExtension->LowerDevice, Irp);
+            DestroyPortDriver(DeviceObject);
+                       return Status;
 
                default:
                        Status = Irp->IoStatus.Status;