IOCTL_HID_GET_COLLECTION_DESCRIPTOR请求获取顶级集合的 预先分析的数据,HID 类驱动程序在设备初始化期间从物理设备的报告描述符中提取。
有关 HIDClass 设备的常规信息,请参阅 HID 集合。
主要代码
输入缓冲区
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) |