IOCTL_HID_GET_FEATURE IOCTL (hidclass.h)
IOCTL_HID_GET_FEATURE请求返回与 顶级集合关联的功能报告。
有关 HIDClass 设备的常规信息,请参阅 HID 集合。
主要代码
输入缓冲区
Parameters.DeviceIoControl.OutputBufferLength
成员指定请求者分配的输出缓冲区的大小(以字节为单位)。 HID 类驱动程序使用此缓冲区返回功能报告。
如果集合包含报表 ID,则请求者必须将输出缓冲区的第一个字节设置为非零报表 ID。 否则,请求者必须将输出缓冲区的第一个字节设置为零。
微型驱动程序处理
Irp->UserBuffer
指向 HID 类驱动程序用于输入以下成员的 HID_XFER_PACKET 结构:
输入缓冲区长度
缓冲区的大小(以字节为单位)。 缓冲区必须足够大,才能保存功能报表以及一个指定非零报表 ID 的其他字节。 如果未使用报表 ID,则 ID 值为零。
微型驱动程序处理
HID_XFER_PACKET 结构的大小。
输出缓冲区
Irp->MdlAddress
成员指向 HID 类驱动程序用于返回功能报告的请求者分配的输出缓冲区。 请求者用于输入报表 ID 或零的缓冲区的第一个字节保持不变。 在 ((PUCHAR)Irp->MdlAddress + 1)
返回功能报告(不包括其报表 ID)(如果使用报表 ID)。
微型驱动程序处理
((PHID_XFER_PACKET)(Irp->UserBuffer))->reportBuffer
指向 HID 微型驱动程序用于返回功能报告的请求者分配的输出缓冲区。
输出缓冲区长度
包含报表的缓冲区的长度。
微型驱动程序处理
HID_XFER_PACKET 结构的大小。
状态块
HID 类驱动程序设置以下 Irp->IoStatus
字段:
- 信息 设置为从设备传输的字节数。
- 如果传输已完成且未出错,状态 设置为STATUS_SUCCESS。 否则,它设置为适当的 NTSTATUS 错误代码。
微型驱动程序处理
向设备执行 I/O 的 HID 微型驱动程序设置以下 Irp->IoStatus
字段:
- 信息 设置为从设备传输的字节数。
- 如果传输已完成且未出错,状态 设置为STATUS_SUCCESS。 否则,它设置为适当的 NTSTATUS 错误代码。
通过此 IOCTL 调用其他驱动程序的 HID 微型驱动程序将 I/O 执行到其设备,应确保状态块的 信息 字段正确,并且不会更改 状态 字段的内容。
要求
要求 | 价值 |
---|---|
标头 | hidclass.h (include Hidclass.h) |