Hi Aric:
Yes, it's a mini driver upon hidclass.sys.

The mini driver main work is handle  IRP_MJ_INTERNAL_DEVICE_CONTROL IRP.
In the IRP_MJ_INTERNAL_DEVICE_CONTROL  handle function, I use libusb to read the hid device's
attributes,  set feature report, get feature report, ..etc. 
(Refernece  https://github.com/signal11/hidapi/tree/master/libusb.)

And use udev to monitor device add or remove, once found new a hid device, create a PDO and then call 
hidclass.sys's  PNP_AddDevice to craete FDO.

Last associate the PDO, FDO with libusb's device handle.







------------------
Regards,
Changhui Liu
 
 
 
------------------ Original ------------------
Date:  Sat, Jan 9, 2016 05:25 AM
To:  "Changhui LIU"<liuchanghui@linuxdeepin.com>;
Cc:  "fracting"<fracting@gmail.com>; "Sebastian Lackner"<sebastian@fds-team.de>; "wine-devel"<wine-devel@winehq.org>;
Subject:  Re: hidclass.sys: Properly quit hid_device_thread when bothcompletion event and halt event are signaled (try 2)
 


On Jan 7, 2016, at 8:14 PM, Changhui LIU <liuchanghui@linuxdeepin.com> wrote:

Hi Aric:

The driver is a winelib hidusb.sys work in progress, not a real world native driver.
China Merchant Bank's on-line bank program use HidD_SetFeature/HidD_GetFeature to
access hid token.
I write this dirver based on patches developed by Alexander Morozov .


Ok I understand. I believe the GetFeature and SetFeature parts of his are not implemented at all. They are not hard but where not my first priority.

I have read Alexander's code but it is not clear to me how you are hooking that into hid unless you have written a custom mini driver?

-aric

Now the on-line bank program can detect hid token on wine, but has some little bug.
I will send this driver source code to wine upstream end of this month.

Thank you for your great work on hidclass.sys .






------------------
Regards,
Changhui Liu
 
 
 
------------------ Original ------------------
Date:  Thu, Jan 7, 2016 10:49 PM
To:  "fracting"<fracting@gmail.com>; "Sebastian Lackner"<sebastian@fds-team.de>;
Cc:  "wine-devel"<wine-devel@winehq.org>; "刘昌辉"<liuchanghui@linuxdeepin.com>;
Subject:  Re: hidclass.sys: Properly quit hid_device_thread when bothcompletion event and halt event are signaled (try 2)
 


On 1/7/16 12:47 AM, Qian Hong wrote:
> On Thu, Jan 7, 2016 at 1:23 PM, Sebastian Lackner <sebastian@fds-team.de> wrote:
>> Wouldn't it be easier to just swap events[0] <-> events[1], to handle the
>> exit event with higher priority? I do not see any real need for two calls
>> to Wait*() functions.
>
>
> After discussing on irc, we agree that swapping  events[0] <->
> events[1] is not enough.
> The original patch fix not only one bug, but two separate problems.
> In the existent implementation, If ntrc is never set to
> STATUS_PENDING, then there is no chance to turn exit_now to true,
> Changhui's patch fix this bug, which is discovered by a real world
> online bank driver.
>

My ears perk up here.  Real world online bank driver?  Can I see and play with it. I am really looking for real world cases that use HID.

-aric