Kmdf Hid Minidriver For Touch I2c Device Download -
// HID descriptor VOID TouchI2C_GetHidDescriptor(WDFDEVICE device, PVOID buffer, ULONG bufferLength) { // Define the HID descriptor UCHAR hidDescriptor[] = { // Report descriptor 0x06, 0x00, 0x00, // Usage Page (Generic Desktop) 0x15, 0x00, 0x00, // Logical Minimum 0x26, 0xFF, 0x00, // Logical Maximum 0x35, 0x00, 0x00, // Physical Minimum 0x45, 0x00, 0x00, // Physical Maximum 0x75, 0x08, // Report Size 0x95, 0x01, // Report Count 0x85, 0x01, // Report ID 0x05, 0x08, // Usage (Multi-touch) 0x19, 0x01, // Usage Minimum 0x29, 0x01, // Usage Maximum 0x25, 0x01, // Logical Minimum 0x35, 0x01, // Physical Minimum 0x45, 0x01, // Physical Maximum 0x75, 0x08, // Report Size 0x95, 0x01, // Report Count 0xB1, 0x02, // Feature };
// Device detection NTSTATUS TouchI2C_CreateDevice(WDFDRIVER Driver, PWDFDEVICE_INIT DeviceInit) { WDFDEVICE device; NTSTATUS status; kmdf hid minidriver for touch i2c device download
Alex knew that to get the device working, they needed to develop a custom driver. After researching the available options, Alex decided to create a KMDF (Kernel-Mode Driver Framework) HID (Human Interface Device) minidriver. This type of driver would allow the touch I2C device to be recognized as a HID device, enabling Windows to automatically load the driver and provide a seamless user experience. Alex began by setting up the development environment,
Alex began by setting up the development environment, installing the Windows Driver Kit (WDK) and the Windows SDK. They then created a new KMDF driver project using the WDF (Windows Driver Framework) template. // Usage Page (Generic Desktop) 0x15
// Copy the HID descriptor to the buffer RtlCopyMemory(buffer, hidDescriptor, sizeof(hidDescriptor)); }