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结构的内部结构保留供内部系统使用。

要求

要求 价值
标头 hidclass.h (include Hidclass.h)

另请参阅

HidD_FreePreparsedData

HidD_GetPreparsedData