diff --git a/reactos/drivers/hid/hidclass/fdo.c b/reactos/drivers/hid/hidclass/fdo.c index c78478f6117..70b6460a5d8 100644 --- a/reactos/drivers/hid/hidclass/fdo.c +++ b/reactos/drivers/hid/hidclass/fdo.c @@ -411,6 +411,13 @@ HidClassFDO_RemoveDevice( IN PIRP Irp) { NTSTATUS Status; + PHIDCLASS_FDO_EXTENSION FDODeviceExtension; + + // + // get device extension + // + FDODeviceExtension = DeviceObject->DeviceExtension; + ASSERT(FDODeviceExtension->Common.IsFDO); /* FIXME cleanup */ @@ -425,6 +432,13 @@ HidClassFDO_RemoveDevice( // Irp->IoStatus.Status = Status; IoCompleteRequest(Irp, IO_NO_INCREMENT); + + // + // detach and delete device + // + IoDetachDevice(FDODeviceExtension->Common.HidDeviceExtension.NextDeviceObject); + IoDeleteDevice(DeviceObject); + return Status; } diff --git a/reactos/drivers/hid/hidusb/hidusb.c b/reactos/drivers/hid/hidusb/hidusb.c index 82b86115ee0..72164459d64 100644 --- a/reactos/drivers/hid/hidusb/hidusb.c +++ b/reactos/drivers/hid/hidusb/hidusb.c @@ -1660,12 +1660,6 @@ HidPnp( HidDeviceExtension->ConfigurationDescriptor = NULL; } - // - // delete and detach device - // - IoDetachDevice(DeviceExtension->NextDeviceObject); - IoDeleteDevice(DeviceObject); - return Status; } case IRP_MN_QUERY_PNP_DEVICE_STATE: