找到并打开 HID 集合

本文介绍用户模式应用程序和内核模式驱动程序如何查找和打开顶层 HID 集合

用户模式应用程序

Microsoft Windows 提供设备安装例程(SetupDiXxx 功能)来查找和标识 HIDClass 设备。 Windows 提供了其他 Win32 功能来初始化和连接 HID 集合。

用户模式应用程序加载后,会执行以下一系列操作:

  • 调用 HidD_GetHidGuid,获取 HIDClass 设备的系统定义 GUID。

  • 调用 SetupDiGetClassDevs,获取指向不透明设备信息集的句柄,该信息集描述了当前安装在系统中的所有 HID 集合所支持的设备接口。 应用程序应在传递给 SetupDiGetClassDevsFlags 参数中指定 DIGCF_PRESENT 和 DIGCF_DEVICEINTERFACE。

  • 重复调用 SetupDiEnumDeviceInterfaces 以检索所有可用接口信息。

  • 调用 SetupDiGetDeviceInterfaceDetail,将每个集合的接口信息格式化为 SP_INTERFACE_DEVICE_DETAIL_DATA 结构。 此结构的 DevicePath 成员包含用户模式名称,应用程序使用 Win32 功能 CreateFile 获得 HID 集合的文件句柄。

  • 调用 CreateFile,获取 HID 集合的文件句柄。

内核模式驱动程序

如果内核模式驱动程序是功能驱动程序或筛选器驱动程序,则会将设备对象附加到 HID 集合的设备堆栈。 驱动程序只需使用创建请求即可打开设备。

如果驱动程序不是功能或筛选器驱动程序,它通常会使用即插即用通知来查找集合。 驱动程序找到集合后,会使用创建请求来打开集合。