人体学接口设备(HID)是一种设备类定义,其用途是将PS/2样式的连接器替换为支持HID设备的通用USB驱动程序。HID设备涵盖了广泛的设备类型,包括但不限于键盘、鼠标、游戏控制器、字母数字显示器、条码读取器、音量控制、辅助显示器、传感器等。HID最初设计用于USB,但其架构与总线无关,既适用于低延迟、低带宽设备,又允许灵活指定传输速率。 HID设备间的数据交换是通过报告(Report)完成的,报告是设备和软件客户端之间交换的实际数据。报告描述符(Report Descriptor)定义了设备支持的数据格式和含义。应用程序和HID设备通过三种报告类型进行数据交换:输入报告、输出报告和功能报告。输入报告通常在设备控件状态发生变化时从HID设备发送至应用程序;输出报告则可以被应用程序手动读取或写入,与配置信息相关;功能报告同样可以手动读写,但通常与设备的功能控制有关。 HID体系结构在Windows中的驱动程序堆栈基于名为hidclass.sys的类驱动程序。系统中的HID客户端和传输微型驱动程序负责从用户模式或内核模式与HID设备进行通信。HID客户端还负责处理HID报告,包括初始化、获取、发送和解释HID报告。HID集合(Collection)是具有相同用法或目的的多个HID元素的分组,可以包含不同类型的报告。 HID用法表由USB-IF工作组发布,用于描述HID设备可以执行的操作。这些用法表定义了特定项目的预期含义和用法,如鼠标的左按钮。用法表由多个“用法页”组成,每个用法页描述了一组相关的用法。用法ID由用法页和用法组合而成,用于唯一标识HID用法表中的特定用法。在HID传输部分,文档讨论了基于USB的HID传输概述,包括即插即用支持和电源管理。由于HID设计为低延迟、低带宽设备,因此它适用于即插即用设备,如键盘和鼠标。此外,HID设备支持选择性挂起功能,以优化电源管理。除了USB,HID也支持基于I2C的传输,这允许HID设备使用I2C协议进行通信。HID设备的I2C传输同样具备电源管理功能,并且文档还讨论了排查基于I2C的HID设备常见错误的方法。文档还提及了非HID旧设备和驱动程序,例如PS/2(i8042prt)驱动程序和第三方筛选器驱动程序。安装操作系统驱动程序的环节包括创建INF文件和注册表设置,这些对于HID设备的安装和配置至关重要。 DirectInput部分探讨了游戏控制器的支持,包含DirectInput的概述、原始接口、DirectX5.0接口以及轴选择。强制反馈设备驱动程序接口和游戏控制器控制面板的扩展也是DirectInput相关话题的重要内容。文档还包含了对虚拟HID框架(VHF)和传输微型驱动程序的介绍。VHF提供了一种为HID设备创建虚拟输入设备的方式,而传输微型驱动程序则将微型驱动程序绑定到HID类,以实现与HID设备的交互。平板电脑对微型驱动程序有特定要求,以确保其与基于USB的HID设备兼容。这篇文档提供了关于HID设备、其编程接口、驱动程序体系结构以及如何在不同平台上进行安装和配置的详尽信息。它不仅涵盖了HID设备的基本概念,还深入探讨了高级主题,如HID集合的管理、报告的处理、用法表的解析和设备的电源管理。此外,它也讨论了HID设备的未来发展方向,如通过自定义传输驱动程序实现的特定于供应商的传输方式。