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 ------------------ From: "Aric Stewart"aric@codeweavers.com; 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 . (http://wiki.winehq.org/USB, ftp://ftp.etersoft.ru/pub/people/amorozov/usb )
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 ------------------ From: "Aric Stewart"aric@codeweavers.com; 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