[PATCH v2 6/7] hidclass.sys: Update the interface state when a device is added or removed.

Zebediah Figura zfigura at codeweavers.com
Thu Aug 16 18:37:42 CDT 2018


Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
---
v2: fix compile error

 dlls/hidclass.sys/device.c |  3 +++
 dlls/hidclass.sys/pnp.c    | 12 ++++++++++++
 2 files changed, 15 insertions(+)

diff --git a/dlls/hidclass.sys/device.c b/dlls/hidclass.sys/device.c
index a5cbee9..3364eb3 100644
--- a/dlls/hidclass.sys/device.c
+++ b/dlls/hidclass.sys/device.c
@@ -32,6 +32,7 @@
 #include "wine/debug.h"
 #include "ddk/hidsdi.h"
 #include "ddk/hidtypes.h"
+#include "ddk/wdm.h"
 
 #include "initguid.h"
 #include "devguid.h"
@@ -166,6 +167,8 @@ void HID_DeleteDevice(HID_MINIDRIVER_REGISTRATION *driver, DEVICE_OBJECT *device
         TRACE("Delete link %s\n", debugstr_w(ext->link_name));
         RtlInitUnicodeString(&linkW, ext->link_name);
 
+        IoSetDeviceInterfaceState(&linkW, FALSE);
+
         status = IoDeleteSymbolicLink(&linkW);
         if (status != STATUS_SUCCESS)
             ERR("Delete Symbolic Link failed (%x)\n",status);
diff --git a/dlls/hidclass.sys/pnp.c b/dlls/hidclass.sys/pnp.c
index 6ee89c1..34bd944 100644
--- a/dlls/hidclass.sys/pnp.c
+++ b/dlls/hidclass.sys/pnp.c
@@ -23,6 +23,7 @@
 #include <stdarg.h>
 #include "hid.h"
 #include "ddk/hidtypes.h"
+#include "ddk/wdm.h"
 #include "regstr.h"
 #include "wine/debug.h"
 #include "wine/unicode.h"
@@ -282,6 +283,17 @@ NTSTATUS WINAPI HID_PNP_Dispatch(DEVICE_OBJECT *device, IRP *irp)
             }
             break;
         }
+        case IRP_MN_START_DEVICE:
+        {
+            BASE_DEVICE_EXTENSION *ext = device->DeviceExtension;
+            UNICODE_STRING linkU;
+
+            rc = minidriver->PNPDispatch(device, irp);
+
+            RtlInitUnicodeString(&linkU, ext->link_name);
+            IoSetDeviceInterfaceState(&linkU, TRUE);
+            return rc;
+        }
         case IRP_MN_REMOVE_DEVICE:
         {
             return PNP_RemoveDevice(minidriver, device, irp);
-- 
2.7.4




More information about the wine-devel mailing list