创建虚拟HID设备

时间:2011-06-28 10:24:36

标签: virtual hid wdk

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

实现标准HID检测的客户端必须可以看到它:

  • 致电HidD_GetHidGuid() - 获取HID 设备类GUID
  • 调用SetupDiGetClassDevs() - 获取一个 处理一组设备 实现HID接口
  • 调用SetupDiEnumDeviceInterfaces() - 对于返回集中的每个设备 设备,获取接口 所有暴露的HID的信息 接口。
  • 呼叫 SetupDiGetDeviceInterfaceDetail() - 对于在中获得的每个接口 以前的电话,详细说明 该接口的信息块。 这些详细信息包括 可以传递给的字符串 CreateFile()打开一个句柄 设备
  • 调用SetupDiDestroyDeviceInfoList() - 释放设备信息集 这是在致电中获得的 SetupDiGetClassDevs()。

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

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

3 个答案:

答案 0 :(得分:7)

有些人把vmulti项目作为基础http://code.google.com/p/vmulti/

运气好了

答案 1 :(得分:2)

你sholud写一个驱动程序,然后使用DevCon(设备控制台工具)与install选项。


cmdInstall

cmdUpdate的变体,用于在没有关联硬件时安装驱动程序。它创建一个新的根枚举设备实例,并将其与命令行中指定的组合硬件ID相关联(该信息应对应于INF中的硬件ID)。这不能在远程计算机上或在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

答案 2 :(得分:0)

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

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