hidclass.sys: Properly quit hid_device_thread when bothcompletion event and halt event are signaled (try 2)

Changhui LIU liuchanghui at linuxdeepin.com
Sun Jan 10 20:34:23 CST 2016


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 at codeweavers.com>;
Date:  Sat, Jan 9, 2016 05:25 AM
To:  "Changhui LIU"<liuchanghui at linuxdeepin.com>; 
Cc:  "fracting"<fracting at gmail.com>; "Sebastian Lackner"<sebastian at fds-team.de>; "wine-devel"<wine-devel at 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 at 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 at codeweavers.com>;
Date:  Thu, Jan 7, 2016 10:49 PM
To:  "fracting"<fracting at gmail.com>; "Sebastian Lackner"<sebastian at fds-team.de>; 
Cc:  "wine-devel"<wine-devel at winehq.org>; "刘昌辉"<liuchanghui at 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 at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20160111/00d14c88/attachment-0001.html>


More information about the wine-devel mailing list