jloehr / HID-Wiimote

Windows Device Driver for the Nintendo Wii Remote
GNU General Public License v3.0
216 stars 45 forks source link

Direct/Raw/PassThrough Mode #30

Open jloehr opened 7 years ago

jloehr commented 7 years ago

Haven't decided on the final name yet.

Let third party application have access to the Wii Remote as they would if no driver was installed.

trigger-segfault commented 6 years ago

I've been looking into attempting a basic just passthrough mode but it's surprisingly difficult. (I'm new to drivers in general but I can say I've learned a fair bit over the last week.) No matter what I do, I can't seem to get any HID/Read/Write calls to pass down to the filter driver, or even the miniport for some reason. The only time I've been able to communicate with the Wiimote was through the manual queue when it was being filled with GamePad reports. (The manual queue is still something I don't fully understand yet, I've noticed it's present in a lot of driver libraries though).

On the other note, I've fixed issues with the original Wiimote HID Report Descriptors missing Report 0x10 and just not functioning because it expected a report with the information that appeared before report 0x11.

My progress (if you can call it that) can be found here if you're interested in looking at it.

Edit: Upon further inspection it seems that the Report Descriptors are the cause of the issues. What I had previously fixed with the Wiimote RD's was whether or not the HIDClass would even accept them, but now it seems that the device cannot be communicated with with the RD's as they are.

Edit 2 - Electric Boogaloo: The issue, was infact the Report Descriptors silently failing. I can now pickup internal device control events. I'll report back once I've made progress.

Edit 3: I've pretty much given up on getting passthrough to work. I fixed the HID Report Descriptors which got events working again but I couldn't seem to get the filter driver to ever detect my application's read events. (I just don't have the experience necessary effectively work on drivers.) Either way, here's a gist of the HID Report Descriptors I used for the Wiimote.