95a08e99c3
Frame ring (pf-vdisplay) and both gamepad SHM channels move off named Global\ objects (openable by any sibling LocalService) to UNNAMED sections/events whose handles the host DuplicateHandles into the driver's verified WUDFHost with least access — frame delivery over the SYSTEM+admins-only IOCTL_SET_FRAME_CHANNEL, pads over a 32-byte named bootstrap mailbox (pid + handle value only, DoS-bounded; HID minidrivers have no control device). Driver-validated pad_index kills cross-pad redirects; v1↔v2 mixes fail closed with diagnosis logs on both sides. Sibling-LocalService denial proven empirically (design/idd-push-security.md, design/gamepad-channel-sealing.md). Driver-side raw ops now live behind pf-umdf-util (checked shm accessors, the forbid(unsafe_code) ChannelClient state machine, WDF request tokens) — the pad drivers' logic is 100% safe Rust; whole drivers workspace clippy-gated in CI. driver install --gamepad now sweeps SWD\punktfunk phantom devnodes: a re-created SwDevice REVIVES the old devnode with its previously-bound driver (never re-ranks), so an upgrade otherwise leaves the old driver serving — or, across the v1→v2 fence, a dead pad (found live on the RTX box). On-glass validated on the RTX 4090 box: frame path 7007 frames p50 2.06 ms cross-machine; DualSense + XUSB "sealed pad channel mapped"/proto=2 attach via both the test harness and a real streaming session; phantom-sweep repro. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
33 lines
896 B
TOML
33 lines
896 B
TOML
# pf-dualsense - punktfunk virtual DualSense (DS5) / DualShock 4 (DS4) UMDF2 HID minidriver.
|
|
# A member of the in-tree drivers workspace (shares the vendored wdk-sys/wdk-build with the bindgen pin
|
|
# + the crt-static .cargo/config), built from source per release like pf-vdisplay.
|
|
[package]
|
|
name = "pf-dualsense"
|
|
edition.workspace = true
|
|
version.workspace = true
|
|
license.workspace = true
|
|
publish = false
|
|
description = "punktfunk virtual DualSense / DualShock 4 UMDF2 HID minidriver"
|
|
|
|
[package.metadata.wdk.driver-model]
|
|
driver-type = "UMDF"
|
|
umdf-version-major = 2
|
|
target-umdf-version-minor = 31
|
|
|
|
[lib]
|
|
crate-type = ["cdylib"]
|
|
|
|
[build-dependencies]
|
|
wdk-build.workspace = true
|
|
|
|
[dependencies]
|
|
wdk.workspace = true
|
|
wdk-sys.workspace = true
|
|
pf-driver-proto.workspace = true
|
|
pf-umdf-util.workspace = true
|
|
|
|
[features]
|
|
default = ["hid"]
|
|
hid = ["wdk-sys/hid"]
|
|
nightly = ["wdk-sys/nightly", "wdk/nightly"]
|