From 72298934933d222d08b50abe2046c61266b433f2 Mon Sep 17 00:00:00 2001
From: Aric Stewart <aric@codeweavers.com>
Date: Tue, 13 Nov 2018 20:48:18 -0600
Subject: [PATCH] hidclass.sys: Move IoSetDeviceInterfaceState to
 PNP_RemoveDevice.

Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
---
 dlls/hidclass.sys/device.c | 11 -----------
 dlls/hidclass.sys/pnp.c    |  8 ++++++++
 2 files changed, 8 insertions(+), 11 deletions(-)

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);
-- 
GitLab