title: Creating a virtual HID device
body: <p>I'd like to create a virtual HID device (emulate it with a driver).</p>
  
  <p>It must be visible to clients that implement standard HID detection:</p>
  
  <ul>
  <li>Call HidD_GetHidGuid() – Get the HID
  device class GUID</li>
  <li>Call SetupDiGetClassDevs() – Get a
  handle to a set of devices which
  implement the HID interface</li>
  <li>Call SetupDiEnumDeviceInterfaces() –
  For each device in the returned set
  of devices, obtain the interface
  information for all exposed HID
  interfaces.</li>
  <li>Call
  SetupDiGetDeviceInterfaceDetail() –
  For each interface obtained in the
  previous call, get the detailed
  information block for that interface.
  This detailed information includes
  the string that can be passed to
  CreateFile() to open a handle to the
  device</li>
  <li>Call SetupDiDestroyDeviceInfoList() –
  Free up the device information set
  that was obtained in the call to
  SetupDiGetClassDevs().</li>
  </ul>
  
  <p>The device should also support reading, so CreateFile / ReadFile would return data supplied by me from the driver.</p>
  
  <p>I don't really know where to begin, as I don't have a lot of exp. in kernel dev. :(</p>