USB HID驱动程序签名 - WHQL或代码签名证书

时间:2014-02-04 09:19:27

标签: usb hid code-signing-certificate

您好我们是一家嵌入式开发公司(www.emfocus.co.in)和驱动程序签名细节的新手。目前我们正在开发一种UPS驱动程序只是一种通用的USB HID类设备。设备固件已经编写以这种方式将UPS枚举为人机接口设备

但我们的目的是将我们的UPS视为HID UPS电池 - 电池级设备,而不是通用HID设备。因此,当我们将UPS连接到Windows时,Windows会将UPS检测为连接到系统的电池,Windows电源管理器将通过HID接口与UPS通信。我在驱动程序中提到的HID接口不仅仅是一个通用接口。它的HID电源设备接口。我们在我们的迷你驱动程序中定义了HID Power Device报告描述符,因此Windows将枚举顶级集合,这是我们UPS的HID UPS电池。 HID UPS Battery顶级系列已在我们的迷你驱动程序中实施。实际上,如果我们以枚举电池顶级集合的方式编写设备固件,我们就可以使用Windows InBox驱动程序。但是我们的设备固件被编写为枚举为通用HID设备。

一旦Windows检测到HID UPS电池,Windows本身就开始发送功能报告请求以获取电池容量,RunTimeToEmpty,AC存在,充电状态......每件事情都正常。

当这些请求发给我们的驱动程序时,我们的驱动程序将通过USB(使用其专有协议)与UPS通信并从UPS获取状态参数,并且驱动程序使用功能报告中的所需值完成IOCTL_HID_GET_FEATURE请求和Windows Power Manager显示功率计上的状态。

因此,Windows电量计本身将监控UPS电池状态,因为Windows在安装驱动程序后将我们的UPS视为HID UPS电池而非通用HID设备。

我们希望Windows一直选择我们的驱动程序inf文件,同时寻找最佳匹配的驱动程序文件。

为了达到这个目的,我们想知道是否可以使用我们的代码签名证书签署我们的驱动程序,或者获得WHQL认证的驱动程序?

1 个答案:

答案 0 :(得分:1)

如果您只是希望在最终用户系统上“安装”设备而不发出警告或签名错误,则可以为INF安装创建目录文件,并使用代码签名证书对其进行签名。这样做的缺点是,在尝试通过INF安装设备之前,您必须将证书作为受信任的发布者分发并安装到用户的计算机上。

或者,通过WHQL HCK测试运行将要求您获取测试日志(针对每个操作系统)并将其提交给Microsoft,以便审核并通过HCK提交过程创建的CAT文件上提供WHQL签名。此路由对于用户来说是最干净的,因为它不需要证书分发,也证明您的设备通过了WHQL HCK测试。

所以答案取决于你想要做什么以及你的目标受众是谁。如果你能负担得起,我会选择WHQL路线,因为它为最终用户提供了最大的好处。