IOCTL_HID_READ_REPORT IOCTL (hidport.h)

The IOCTL_HID_READ_REPORT request transfers an input report from a HIDClass device into the HID class driver's buffer.

For general information about HIDClass devices, see HID Collections.

Major code

IRP_MJ_DEVICE_CONTROL

Input buffer

Parameters.DeviceIoControl.OutputBufferLength contains the size of the buffer provided at Irp->UserBuffer.

Input buffer length

The size of OutputBufferLength

Output buffer

HID minidriver fills the system-resident buffer pointed to by Irp->UserBuffer with the report data retrieved from the device.

Output buffer length

The size of the UserBuffer.

Status block

HID minidrivers that carry out the I/O to the device set the following fields of Irp->IoStatus:

  • Information is set to the number of bytes transferred from the device.
  • Status is set to STATUS_SUCCESS if the transfer completed without error. Otherwise, it is set to an appropriate NTSTATUS error code.
HID minidrivers that call other drivers with this IRP to carry out the I/O to their device should ensure that the Information field of the status block is correct and not change the contents of the Status field.

Remarks

IOCTL_HID_READ_REPORT is typically used for continuously completing input reports that are sent by the device. This IOCTL is sent down by the HID class driver (HIDCLASS) in ping-pong fashion. In other words, as soon as a request is fulfilled (completed), another one can be sent down to the device, allowing for continuous reporting of data. This is an “asynchronous” mechanism, so for example, the device can use it to send data up to the host, regarding changes in state as those changes occur.

Requirements

Requirement Value
Header hidport.h (include Hidport.h)

See also

HidD_GetFeature

HidD_GetInputReport

HidD_SetFeature

HidD_SetOutputReport

IOCTL_HID_GET_FEATURE

IOCTL_HID_GET_INPUT_REPORT

IOCTL_HID_SET_FEATURE

IOCTL_HID_SET_OUTPUT_REPORT

IOCTL_HID_WRITE_REPORT