9

我想创建一个虚拟 HID 设备(用驱动程序模拟它)。

它必须对实施标准 HID 检测的客户端可见:

  • 调用 HidD_GetHidGuid() – 获取 HID 设备类 GUID
  • 调用 SetupDiGetClassDevs() – 获取一组实现 HID 接口的设备的句柄
  • 调用 SetupDiEnumDeviceInterfaces() – 对于返回的设备集中的每个设备,获取所有公开的 HID 接口的接口信息。
  • 调用 SetupDiGetDeviceInterfaceDetail() – 对于在上一次调用中获得的每个接口,获取该接口的详细信息块。此详细信息包括可以传递给 CreateFile() 以打开设备句柄的字符串
  • 调用 SetupDiDestroyDeviceInfoList() – 释放在调用 SetupDiGetClassDevs() 中获得的设备信息集。

该设备还应该支持读取,因此 CreateFile / ReadFile 将返回我从驱动程序提供的数据。

我真的不知道从哪里开始,因为我没有很多经验。在内核开发中。:(

4

3 回答 3

8

有些人很幸运将 vmulti 项目作为基础http://code.google.com/p/vmulti/

于 2011-07-02T05:11:00.977 回答
2

您应该编写一个驱动程序,然后使用DevCon(设备控制台工具)install选项。


cmdInstall

A variation of cmdUpdate to install a driver when there is no associated hardware. It creates a new root-enumerated device instance and associates it with a made up hardware ID specified on the command line (which should correspond to a hardware ID in the INF). This cannot be done on a remote machine or in the context of Wow64.


http://code.msdn.microsoft.com/windowshardware/DevCon-Sample-4e95d71c

http://msdn.microsoft.com/en-us/library/windows/hardware/ff544707%28v=vs.85%29.aspx

http://msdn.microsoft.com/en-us/library/windows/hardware/ff544780%28v=vs.85%29.aspx

于 2012-11-27T16:53:44.550 回答
0

请参阅 vhidmini ddk 示例驱动程序。它在 1830 DDK 版本中,但不是最新版本。或者 Oney 书中的 hidfake 样本。

请参阅http://www.microsoft.com/mspress/books/sampchap/6262.aspx

于 2012-08-24T11:10:41.403 回答