USBPRINT.SYS 生成的标识符

从 Windows 2000 开始,作系统提供内核模式 USB 打印驱动程序, usbprint.sys 将打印机子系统连接到 USB 堆栈。 原生 USB 打印机驱动程序使供应商无需开发自己的内核模式 USB 打印机驱动程序。 这样,供应商就可以开发适用于 USB 和并行打印机的高级用户模式打印机驱动程序。

usbprint.inf 安装文件包含与所有 USB 类 7 打印机设备匹配的兼容 ID。 如果 USB 集线器驱动程序枚举这些设备中的一台,操作系统将找到集线器驱动程序在 usbprint.inf 中生成的 ID 的匹配项,并将加载 USB 打印机驱动程序 usbprint.sysusbprint.inf 中找到的兼容 ID 具有以下形式:

USB\CLASS_07

地点:

  • 类 07h = 属于 USB 打印机类的设备

加载后,USB 打印机驱动程序会为打印机设备创建新的 PDO。 当即插即用(PnP)管理器查询新创建的 PDO 的设备标识字符串时,USB 打印机驱动程序会创建一个新的硬件 ID,该 ID 派生自设备的 IEEE 1284 字符串,该字符串与并行总线枚举器生成的字符串标识符兼容。 此硬件 ID 具有以下格式:

USBPRINT\NameModel(20)校验和(4)

地点:

  • NameModel(20) 是制造商名称和设备的型号的串联,截断为最多 20 个字符。

  • 校验和(4) 是从制造商名称和型号名称计算的 4 个字符循环冗余检查(CRC)代码。

字符串中的空格将替换为下划线。 例如,如果制造商的名称为“Hewlett-Packard”,则型号名称为“HP Color LaserJet 550”,校验和为 3115,则硬件 ID 如下所示:

USBPRINT\Hewlett-PackardHP_Co3115

在前面的示例中,模型名称中的“HP”和“Color”之间的间距被替换为下划线,以生成截断的 make/model 字符串“Hewlett-PackardHP_Co”。

注意 由操作系统生成的 CRC 可能与上一部分描述的或任何其他 CRC 算法计算的 CRC 不匹配。 因此,打印机驱动程序可能无法计算与打印机驱动程序的 INF 文件一起使用的正确 hardwareID。 若要检索硬件ID,最好搜索与安装的 USB 打印机关联的 setupapi.dev.log 文件。