v 1
July 5, 2020

HID Virtual Driver Kit

The to Emulate

Joystick, Keyboard and Mouse for Windows 7, 8, 8.1, 10 64 bit

The HVDK Drivers

User-mode vs Kernel-mode Drivers

HVDK drivers are User-Mode drivers. A user-mode driver runs in its own private virtual address space, so it runs in isolation from other user-mode applications. A user-mode driver is very much like a regular application like Notepad.exe, except that it is a driver. The advantage user-mode drivers are security (users who install the driver are taking less risk to their system) and stability (if the driver crashes, it doesn’t BSOD your computer, requiring a reboot). And for driver developers, user-mode drivers provide a much easier way to debug the drivers.

Kernel-mode drivers exist in the Windows Kernel virtual address space, so a kernel-mode driver can cause a lot of problems if it crashes or misbehaves.

Read more about User vs Kernel Mode drivers here:

https://docs.microsoft.com/en-us/windows-hardware/drivers/gettingstarted/user-mode-and-kernel-mode

https://docs.microsoft.com/en-us/windows-hardware/drivers/wdf/user-mode-driver-framework-frequently-asked-questions

The Driver Files

These files are for the keyboard driver, but the list is more or less the same idea for the other drivers. The following files are included:

  • devcon.exe – a Microsoft utility for installing the drivers
  • Install.bat – a batch file for installing the drivers. This will attempt to uninstall the drivers first. This must be run as Admin.
  • readme.txt – instructions on how to install and uninstall the drivers manually.
  • ttcvcontrkb.cat – the security catalog.
  • ttcvcontr.dll – the main driver binary.
  • ttcvcontr.inf – the driver setup information file. Although this file is editable and unsigned, any changes made here will cause the driver installation to fail. The security catalog file is a compiled version of this file via the Inf2Cat utility in Visual Studio, and if they don’t match, the driver won’t install.
  • ttcvcontrollershim.sys – another binary.
  • uninstall.bat – a batch file for uninstalling the drivers. This must be run as Admin.
  • WudfUpdate_01011.dll – a Microsoft library file.
The three files that are highlighted are signed.