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

Aric Stewart aric at codeweavers.com
Fri Aug 17 14:08:05 CDT 2018


Signed-off-by: Aric Stewart <aric at codeweavers.com>

On 8/16/18 6:37 PM, Zebediah Figura wrote:
> 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);
> 



More information about the wine-devel mailing list