Adding RID_TYPEHID RawInput support to user32

Aric Stewart aric at codeweavers.com
Tue Jul 7 07:37:23 CDT 2015


On 7/6/15 10:53 AM, Nathan Schulte wrote:
> On 07/06/2015 07:40 AM, Aric Stewart wrote:
>> Hello there,  Sorry for the delay I was away on vacation until today.
>>
>> Yes, RawInput support should go through hid.dll. That is actually part of the reason I am doing the hid work the ways I am doing it. I want to be able to fully and correctly support RawInput as well as dinput, xinput and winmm joysticks.
>>
>> For wine work, you can have all the user32 stuff using the hid.dll HidD_ and HidP_ functions as they can be considered user land work. If you find there are HidD_ or HidP_ function you need that are not implemented, then that can be done.
>>
>> Right now the hid.dll work has gotten in but I am just starting to get the underlying hid minidriver work in place. Without the minidriver work hid.dll will not do much.
> 
> I found your recent discussion from April ("Wine Joysticks, seeking a plan"), as well as reviewed your current work to hid.dll.  I've been learning about the stack as I go along, but it seems documented enough to get a grasp of.  These are the minidrivers you're talking about?
> 
> https://msdn.microsoft.com/en-us/library/windows/hardware/jj131707(v=vs.85).aspx
> 
> You're thinking of creating one per platform/API (on the hosting side: Linux/evdev, (Unix/Linux?) X11, Unix/Mac *), or mirroring MS's setup? I'm not sure how the loading of those libraries works (I did see the HidRegisterMinidriver routine though), so maybe the question is inaccurate.

So the next round of patches have been submitted so you can see my hidclass and minidriver work. The goal is to have all the system native minidriver be in the winehidminidriver.sys so that it can be independent from the graphics driver. Wine's hidclass.sys can handle multiple minidrivers in one service, so we should not need independent minidrivers for every platform. Which should be handy. 

> 
> On 07/06/2015 07:40 AM, Aric Stewart wrote:
>> Yes all the user32 work will need to be done.
>>
>> Xinput is on my goal list also. Xinput should also be a client of hid.dll
> 
> Sounds good.  I'll try to help where I can.  It sounds like I need to become more familiar with the system before I'm really useful.

There are 3 places I can really use help.

1) Review patches:  I always love good reviews on my patches. Leads to stronger code.

2) Above hid.dll:  This is doing the development work on RawInput, Xinput, Dinput and such to become clients of the user level hid.dll functions to access joysticks and gamepads. This should mostly be learning the respective APIs and hooking them into HID.  RawInput is probably the easiest as it does not do much with the HID reports other than just pass them on.

3) Linux minidrivers:  I have implemented the OS/X minidriver because that is what I am most familiar with. There is work to implement the linux and linuxinput minidrivers. This is for someone familiar with or wants to become familiar with the lower level linux interfaces. 

-aric



More information about the wine-devel mailing list