IOCTL_HID_GET_FEATURE IOCTL (hidclass.h)

IOCTL_HID_GET_FEATURE请求返回与 顶级集合关联的功能报告。

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

主要代码

IRP_MJ_DEVICE_CONTROL

输入缓冲区

成员 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 调用其他驱动程序以对其设备执行 I/O 的 HID 微型驱动程序应确保状态块 的“信息” 字段正确且不会更改 “状态” 字段的内容。

要求

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

另请参阅