HID: Microsoft drivers for top collections are not loaded/banged out


I was trying to immplement HID with non-microsoft BT stack. I am facing a peculiar problem. Can someone throw light on this?

For few of the multifunction devices like MX5500 Logitech KB or Revolution mouse or Microsoft BTPresenter mouse, I observe the following

  1. These devices subscribe more than one top level HID collections, for which the microsoft HID to-level collection drivers are required.
  2. Upon loading my minidriver, sometimes these microsoft top collection drivers esp HID-COmpliant Mice are BANGED OUT (Yellow mark in Device manager) or they are not loaded.
  3. I can do away with with problem by reinstalling my mini driver :slight_smile:

There is no clue as to what is happening :frowning:
Checked every bit of mini-driver/Class drivver interaction, it seems to be perfectly same in pass and fail cases.
Is it something related to signing or something?

I am testing on WIN7 Env



I have found the solution. But I have still few questions to be answered.

Hid Minidriver acts as a sort of bus driver for microsoft top level collections.
The values a hidminidriver supplies for BusQueryHardwareIDs allows the system to locate the appropriate drivers for the collection drivers.System checks the IDs against the IDs listed in INF files for possible matches. Setup first scans the hardware IDs list, then the compatible IDs list. As a resposnse to this IRP, (IRP_MN_QUERY_ID), by legacy, same ID was sent for all the devices.
The first time a device is pairs,for each of the HID collections the device supports, MS creates a harware id together with id supplied by minidriver and the collection number suffix.
eg hid\hiddevice046db303&col01
This is basically an optimised way of loading collection drivers used my microsoft. (Is this TRUE?)
In our case, these ids were similiar accross all the hid devices by legacy, due to which wrong collection drivers were loaded. This issue didnt surface till we had non-obvious collections being supported by devices. (For eg multifunction devices).

The resoultion is uniquely return the hardware id for each of the device. This is done by appending vendorId and productid to existing hardware id.

My Questions are
How MSFT loads or optimises loading of collection drivers?

Why the mentioned problem comes only with a multi function or multi HID-collection peripherals

How can I avoid Add device window for each of the collections every time the collections are informed to HID Class driver? Cant the system do silent install? Is there anything that can be done to avoid pop up by PnP manager to load the additional drivers?
(This question is out of context… )