feat(gamepad): SwDeviceCreate per-session devnode (best-effort) + windows self-test
DualSenseWindowsManager now SwDeviceCreate's the pf_dualsense devnode per session (SwDeviceClose on drop), matching the Linux UHID pad's lifecycle. It's best-effort: SwDeviceCreate currently hits an unresolved E_INVALIDARG when a completion callback is passed (an underscore in the enumerator name was a second cause, fixed by using "punktfunk"), so on failure the host keeps the section + data plane and falls back to an out-of-band devnode (installer/devgen) — see docs/windows-dualsense-scoping.md. Add a `dualsense-windows-test` host CLI that drives the manager (create devnode + push a frame + hold), used to validate the path. Live on the RTX box: the manager creates the section + pushes report 0x01 and a devnode serves it to a HID read (b1=0xC0, b8=0x28) — the host-side data plane works end to end. cargo check + clippy -D warnings clean on x86_64-pc-windows-msvc. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -120,6 +120,9 @@ windows = { version = "0.62", features = [
|
||||
# shared-memory section (inject/dualsense_windows.rs) so the UMDF host can open it.
|
||||
"Win32_Security_Authorization",
|
||||
"Win32_Devices_DeviceAndDriverInstallation",
|
||||
# SwDeviceCreate/SwDeviceClose — the per-session virtual-DualSense devnode
|
||||
# (inject/dualsense_windows.rs).
|
||||
"Win32_Devices_Enumeration_Pnp",
|
||||
"Win32_Devices_Display",
|
||||
"Win32_Storage_FileSystem",
|
||||
"Win32_System_IO",
|
||||
|
||||
Reference in New Issue
Block a user