[HIDCLASS] Implement IRP_MN_QUERY_INTERFACE/GUID_HID_INTERFACE_HIDPARSE

Also add a stub for GUID_HID_INTERFACE_NOTIFY.
This commit is contained in:
Hervé Poussineau
2026-09-25 20:07:49 +02:00
parent 938c14e327
commit 445d0881b8

View File

@@ -608,12 +608,36 @@ HidClassPDO_PnP(
}
case IRP_MN_QUERY_INTERFACE:
{
DPRINT1("[HIDCLASS] PDO IRP_MN_QUERY_INTERFACE not implemented\n");
//
// do nothing
// return error default
//
Status = Irp->IoStatus.Status;
//
// check for known interfaces
//
if (IsEqualGUIDAligned(IoStack->Parameters.QueryInterface.InterfaceType,
&GUID_HID_INTERFACE_NOTIFY))
{
PHID_INTERFACE_NOTIFY_PNP HidInterfaceNotify = (PHID_INTERFACE_NOTIFY_PNP)IoStack->Parameters.QueryInterface.Interface;
if (IoStack->Parameters.QueryInterface.Size == sizeof(*HidInterfaceNotify) &&
IoStack->Parameters.QueryInterface.Version == 1)
{
DPRINT1("[HIDCLASS] PDO IRP_MN_QUERY_INTERFACE/GUID_HID_INTERFACE_NOTIFY not implemented\n");
ASSERT(FALSE);
}
}
else if (IsEqualGUIDAligned(IoStack->Parameters.QueryInterface.InterfaceType,
&GUID_HID_INTERFACE_HIDPARSE))
{
PHID_INTERFACE_HIDPARSE HidInterfaceHidparse = (PHID_INTERFACE_HIDPARSE)IoStack->Parameters.QueryInterface.Interface;
if (IoStack->Parameters.QueryInterface.Size == sizeof(*HidInterfaceHidparse) &&
IoStack->Parameters.QueryInterface.Version == 1)
{
HidInterfaceHidparse->HidpGetCaps = HidP_GetCaps;
Status = STATUS_SUCCESS;
}
}
break;
}
case IRP_MN_QUERY_REMOVE_DEVICE: