Author the custom virtual HID gamepad that replaces vJoy, and pin its wire format on both sides. Builds clean to RioGamepad.sys against the EWDK (KMDF 1.15 + VHF, x64, warnings-as-errors). driver/RioGamepad/: - ReportDescriptor.h: 6x16-bit axes (X,Y,Z,Rx,Ry,Rz), one 4-direction hat with null state, and 96 buttons — the legacy vJoy layout. 25-byte input report. - Device.c/Driver.c: KMDF root-enumerated device that creates the VHF virtual HID device (VhfCreate in DeviceAdd, VhfStart in D0Entry, VhfDelete on cleanup) and exposes a device interface + IOCTL_RIO_SUBMIT_REPORT that forwards the caller's report bytes to VhfReadReportSubmit. Thin relay: no report logic in the kernel. - Public.h: device-interface GUID, IOCTL, and the report byte layout shared with the C# client. RioGamepad.inf + build.cmd (EWDK build, catalog/sign disabled). src/RioJoy.Core/Hid/RioHidReport.cs: packs AxisOutputs + hat + 96 buttons into the exact 25-byte report (LE axes, hat nibble with 0x0F=centered, button bitmap). 13 new xUnit tests (136 total). Remaining (deploy-side): test-sign + pnputil install + verify in joy.cpl, and wire the real DeviceIoControl feeder sink (replacing NullJoystickSink). The EWDK's in-build catalog task (DrvCat) can't load Microsoft.Kits.Logger on this image, so the .cat is produced with inf2cat/signtool at install time instead. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
27 lines
903 B
Batchfile
27 lines
903 B
Batchfile
@echo off
|
|
REM Build RioGamepad.sys against a mounted Enterprise WDK (EWDK).
|
|
REM Usage: build.cmd [EWDK_DriveOrRoot] (default: E:)
|
|
REM
|
|
REM Produces driver\RioGamepad\x64\Release\RioGamepad.sys.
|
|
REM Catalog (.cat) creation and signing are intentionally disabled here — that is
|
|
REM the deploy/test-sign step (see driver\README.md). On this EWDK the managed
|
|
REM DrvCat MSBuild task fails to load Microsoft.Kits.Logger, so the .cat is built
|
|
REM separately with inf2cat.exe / signtool.exe at install time.
|
|
|
|
setlocal
|
|
set "EWDK=%~1"
|
|
if "%EWDK%"=="" set "EWDK=E:"
|
|
|
|
call "%EWDK%\BuildEnv\SetupBuildEnv.cmd" >nul
|
|
if errorlevel 1 (
|
|
echo Failed to initialize the EWDK build environment from "%EWDK%".
|
|
exit /b 1
|
|
)
|
|
|
|
msbuild "%~dp0RioGamepad.vcxproj" ^
|
|
/p:Configuration=Release /p:Platform=x64 ^
|
|
/p:SignMode=Off /p:DriverCatalog_Enable=false ^
|
|
/nologo /v:m /clp:NoSummary
|
|
|
|
exit /b %ERRORLEVEL%
|