diff --git a/dlls/hidclass.sys/device.c b/dlls/hidclass.sys/device.c index a841575667f..547c3554108 100644 --- a/dlls/hidclass.sys/device.c +++ b/dlls/hidclass.sys/device.c @@ -130,23 +130,12 @@ error: void HID_DeleteDevice(HID_MINIDRIVER_REGISTRATION *driver, DEVICE_OBJECT *device) { - NTSTATUS status; BASE_DEVICE_EXTENSION *ext; LIST_ENTRY *entry; IRP *irp; ext = device->DeviceExtension; - if (ext->link_name.Buffer) - { - TRACE("Delete link %s\n", debugstr_w(ext->link_name.Buffer)); - - IoSetDeviceInterfaceState(&ext->link_name, FALSE); - status = IoDeleteSymbolicLink(&ext->link_name); - if (status != STATUS_SUCCESS) - ERR("Delete Symbolic Link failed (%x)\n",status); - } - if (ext->thread) { SetEvent(ext->halt_event); diff --git a/dlls/hidclass.sys/pnp.c b/dlls/hidclass.sys/pnp.c index 47bd443a86f..08aae159f22 100644 --- a/dlls/hidclass.sys/pnp.c +++ b/dlls/hidclass.sys/pnp.c @@ -212,9 +212,17 @@ NTSTATUS WINAPI PNP_AddDevice(DRIVER_OBJECT *driver, DEVICE_OBJECT *PDO) NTSTATUS PNP_RemoveDevice(minidriver *minidriver, DEVICE_OBJECT *device, IRP *irp) { + BASE_DEVICE_EXTENSION *ext = device->DeviceExtension; hid_device *hiddev; NTSTATUS rc = STATUS_NOT_SUPPORTED; + rc = IoSetDeviceInterfaceState(&ext->link_name, FALSE); + if (rc) + { + FIXME("failed to disable interface %x\n", rc); + return rc; + } + if (irp) rc = minidriver->PNPDispatch(device, irp); HID_DeleteDevice(&minidriver->minidriver, device);