IOCTL_HID_GET_COLLECTION_DESCRIPTOR IOCTL (hidclass.h)

IOCTL_HID_GET_COLLECTION_DESCRIPTOR请求获取顶级集合的 预分析数据,HID 类驱动程序在设备初始化期间从物理设备的报表描述符中提取这些数据。

有关 HIDClass 设备的常规信息,请参阅 HID 集合

主要代码

IRP_MJ_DEVICE_CONTROL

输入缓冲区

IRP 的 I/O 堆栈位置中的 Parameters.DeviceIoControl.OutputBufferLength 指示 Irp-UserBuffer> 指定的输出缓冲区的大小(以字节为单位)。

输出缓冲区

Irp->UserBuffer 是指向请求者分配的缓冲区的 PVOID 指针,HID 类驱动程序使用该指针返回可变长度 _HIDP_PREPARSED_DATA 结构。 必须从非分页池分配此缓冲区。

输出缓冲区长度

预分析数据结构的大小(以字节为单位)是使用 IOCTL_HID_GET_COLLECTION_INFORMATION获取的。

状态块

HID 类驱动程序设置 Irp-IoStatus> 的以下字段:

  • 信息 设置为预分析数据的大小(以字节为单位)。
  • 如果检索到的预分析数据未出错,则状态设置为STATUS_SUCCESS。 否则,它会设置为相应的 NTSTATUS 错误代码。 如果请求者提供的输出缓冲区不够大,无法保存预先分析的数据,则状态设置为STATUS_INVALID_BUFFER_SIZE。

注解

_HIDP_PREPARSED_DATA结构包含顶级集合的预分析数据

typedef struct _HIDP_PREPARSED_DATA * PHIDP_PREPARSED_DATA;

用户模式应用程序调用 HidD_GetPreparsedData 以获取顶级集合的预分析数据,其长度_HIDP_PREPARSED_DATA结构可变。

内核模式驱动程序使用 IOCTL_HID_GET_COLLECTION_DESCRIPTOR 请求获取指向顶级集合的预分析数据的指针。

_HIDP_PREPARSED_DATA 结构的内部结构保留供内部系统使用。

要求

要求
Header hidclass.h (包括 Hidclass.h)

另请参阅

HidD_FreePreparsedData

HidD_GetPreparsedData