【发布时间】:2012-08-14 18:45:10
【问题描述】:
是否可以编写一个 HID 驱动程序,从设备输入执行某些操作,而不需要用户层中的应用程序?
Microsoft docs 描述了用户层中的客户端应用程序通过 HID.dll 与内核中的 HID 架构进行交互。没有客户端时,内核级驱动代码是否仍然运行?
如果可能,允许哪些类型的操作?例如,驱动程序能否将来自设备的信息通过 UDP 流传输?
【问题讨论】:
是否可以编写一个 HID 驱动程序,从设备输入执行某些操作,而不需要用户层中的应用程序?
Microsoft docs 描述了用户层中的客户端应用程序通过 HID.dll 与内核中的 HID 架构进行交互。没有客户端时,内核级驱动代码是否仍然运行?
如果可能,允许哪些类型的操作?例如,驱动程序能否将来自设备的信息通过 UDP 流传输?
【问题讨论】:
是的。如果您不能从中断例程中完成您需要的所有操作,内核模式驱动程序可以在启动时(即从DriverEntry)使用PsCreateSystemThread 启动一个或多个系统线程,然后充当它自己的客户端。
当然,您只能执行内核模式下可能执行的操作。对于网络操作,Winsock Kernel API 可用。从文档中并不完全清楚该接口是否适用于所有驱动程序或仅适用于网络驱动程序,但如有必要,您始终可以在您自己的驱动程序旁边安装网络过滤器驱动程序。
但是请注意,安装系统服务以充当用户模式组件可能更容易。您应该可以通过described here 的特定设备共同安装程序执行此操作。
【讨论】: