Create a text file named MyTablet.inf. Below is a template for WinUSB.
; ; MyTablet.inf ; Windows Driver Package for a Graphics Tablet using WinUSB ;[Version] Signature = "$Windows NT$" Class = USBDevice ClassGuid = 88BAE032-5A81-49f0-BC3D-A4FF138216D6 Provider = %ManufacturerName% CatalogFile = MyTablet.cat DriverVer = 01/01/2025,1.0.0.0
[Manufacturer] %ManufacturerName% = Devices, NTamd64
[Devices.NTamd64] %DeviceName% = Install_WinUSB, USB\VID_0483&PID_5750
; Replace VID_0483&PID_5750 with your actual IDs
[Install_WinUSB] Include = winusb.inf Needs = WINUSB.NT AddService = WinUsb, 0x00000002, WinUsb_ServiceInstall
[WinUsb_ServiceInstall] DisplayName = %WinUsbServiceName% ServiceType = 1 StartType = 3 ErrorControl = 1 ServiceBinary = %12%\WinUsb.sys Create a text file named MyTablet
[Install_WinUSB.HW] AddReg = Device_AddReg
[Device_AddReg] HKR,,"DeviceInterfaceGUID",0,"337FD5C2-7F7D-4F8E-B7F7-8F8B8E8D8F8A"
[SourceDisksNames] 1 = %DiskName%
[SourceDisksFiles] WinUsb.sys = 1
[DestinationDirs] DefaultDestDir = 12
[Strings] ManufacturerName = "My Company" DeviceName = "Digital Artist Tablet" WinUsbServiceName = "WinUsb" DiskName = "MyTablet Installation Disk"The device link is not complete until you
The device link is not complete until you have software reading the data. Here is a minimal C++ example using WinUSB API to read pen coordinates:
#include <windows.h> #include <winusb.h> #include <setupapi.h>// Use the same GUID from the INF // 337FD5C2-7F7D-4F8E-B7F7-8F8B8E8D8F8A DEFINE_GUID(GUID_DEVINTERFACE_MyTablet, 0x337fd5c2, 0x7f7d, 0x4f8e, 0xb7, 0xf7, 0x8f, 0x8b, 0x8e, 0x8d, 0x8f, 0x8a);
int main() // 1. Find the device using SetupDi API // 2. Create a WinUSB handle via CreateFile // 3. Read from the interrupt pipe (pen data)
HANDLE hDevice = CreateFile(devicePath, ...); WINUSB_INTERFACE_HANDLE hWinUsb; WinUsb_Initialize(hDevice, &hWinUsb); UCHAR penPacket[8]; DWORD bytesTransferred; while (true) WinUsb_ReadPipe(hWinUsb, 0x81, penPacket, 8, &bytesTransferred, NULL); // Parse X, Y, pressure from packet // Send to GUI or game engine
Most commercial tablets (Wacom, Huion, XP-Pen) use proprietary, monolithic drivers. However, if you are building a custom open-source tablet or repurposing an old device, the standard driver package will not work. This is where WinUSB becomes your best friend.
Symptom: Yellow bang in Device Manager.
Solution:
If you have ever plugged a graphics tablet (like a Huion, XP-Pen, or a custom DIY pad) into a Windows PC and dug into the Device Manager, you might have stumbled upon terms like "WinUSB" or "Device Link" . These aren't random errors—they are critical components of how your tablet communicates with your creative software.
This article breaks down the chain: Graphics Tablet → USB Device → WinUSB Driver Package → Windows Link.