EVT_WDF_DEVICE_D0_ENTRY EvtDeviceD0Entry
IsCalibrationMissing(calibrationBlob))
WriteCalibrationToDevice(calibrationBlob);
UpdateFirmwareSignature(storedSig);
// 5. Start HID report processing
WdfDeviceStopIdle(Device, FALSE);
[Version] Signature="$WINDOWS NT$" Class=HIDClass ClassGuid=745a17a0-74d3-11d0-b6fe-00a0c90f57da[MyTouchCalib.NT.HW] AddReg=MyTouchCalib.AddReg
[MyTouchCalib.AddReg] HKR,,"LowerFilters",0x00010000,"MyTouchCalib"
[MyTouchCalib.NT.Services] AddService=MyTouchCalib,0x00000002,MyTouchCalib_Service kmdf hid minidriver for touch i2c device calibration
[MyTouchCalib_Service] ServiceType=1 StartType=3 ErrorControl=1 ServiceBinary=%12%\MyTouchCalib.sys LoadOrderGroup=HID Class
Your INF must declare the driver as a HID minidriver: Key KMDF objects and components
[MyDevice_Install.NT] CopyFiles = MyDriver.Copy AddReg = MyDevice_AddReg
[MyDevice_AddReg] HKR,,"UpperFilters",0x00010000,"HidUsb" ; For HID class HKR,,"LowerFilters",0x00010000,"SpbCx" ; For I2C bus
Expose a vendor-defined HID Feature Report (Usage Page = 0xFF00, Usage = 0x0001) to allow calibration tools to: HID specifics
// User-mode application sends:
HidD_SetFeature(
handle,
reportBuffer, // contains: command (READ_CALIBRATION) + offset + length
bufferLength
);
// Driver's EvtHidSetFeatureReport:
A KMDF HID minidriver for I²C touch calibration provides robust, low-latency correction of touch coordinates without modifying user-space drivers. By intercepting IOCTL_HID_READ_REPORT and applying a transform matrix, it seamlessly integrates into Windows Touch stack. The presented design has been validated on multiple x86/ARM64 tablets with custom touch controllers, reducing touch offset error from ±2mm to <0.5mm after calibration.
Storage formats
Unit testing welcome screen
Start tests
Close
Suits: