Commit b84334d2 authored by Zebediah Figura's avatar Zebediah Figura Committed by Alexandre Julliard

hidclass.sys: Create a mouse device interface for HID mouse devices.

parent 37d51cd1
......@@ -33,6 +33,7 @@
#include "initguid.h"
#include "devguid.h"
#include "ntddmou.h"
WINE_DEFAULT_DEBUG_CHANNEL(hid);
WINE_DECLARE_DEBUG_CHANNEL(hid_report);
......@@ -122,6 +123,14 @@ NTSTATUS HID_LinkDevice(DEVICE_OBJECT *device)
return status;
}
/* FIXME: This should probably be done in mouhid.sys. */
if (ext->preparseData->caps.UsagePage == HID_USAGE_PAGE_GENERIC
&& ext->preparseData->caps.Usage == HID_USAGE_GENERIC_MOUSE)
{
if (!IoRegisterDeviceInterface(device, &GUID_DEVINTERFACE_MOUSE, NULL, &ext->mouse_link_name))
ext->is_mouse = TRUE;
}
return STATUS_SUCCESS;
error:
......
......@@ -55,6 +55,9 @@ typedef struct _BASE_DEVICE_EXTENSION {
KSPIN_LOCK irp_queue_lock;
LIST_ENTRY irp_queue;
BOOL is_mouse;
UNICODE_STRING mouse_link_name;
/* Minidriver Specific stuff will end up here */
} BASE_DEVICE_EXTENSION;
......
......@@ -215,6 +215,9 @@ NTSTATUS PNP_RemoveDevice(minidriver *minidriver, DEVICE_OBJECT *device, IRP *ir
return rc;
}
if (ext->is_mouse)
IoSetDeviceInterfaceState(&ext->mouse_link_name, FALSE);
if (irp)
rc = minidriver->PNPDispatch(device, irp);
HID_DeleteDevice(device);
......@@ -294,6 +297,8 @@ NTSTATUS WINAPI HID_PNP_Dispatch(DEVICE_OBJECT *device, IRP *irp)
rc = minidriver->PNPDispatch(device, irp);
IoSetDeviceInterfaceState(&ext->link_name, TRUE);
if (ext->is_mouse)
IoSetDeviceInterfaceState(&ext->mouse_link_name, TRUE);
return rc;
}
case IRP_MN_REMOVE_DEVICE:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment