Поделиться через


IOCTL_HID_GET_INPUT_REPORT IOCTL (hidclass.h)

Запрос IOCTL_HID_GET_INPUT_REPORT получает входной отчет из коллекции верхнего уровня.

Общие сведения о устройствах HIDClass см. в коллекций HID.

Основной код

IRP_MJ_DEVICE_CONTROL

Входной буфер

Элемент Parameters.DeviceIoControl.OutputBufferLength указывает размер выделенного пользователем выходного буфера в байтах. Драйвер класса HID использует этот буфер для возврата входного отчета.

Если коллекция содержит идентификаторы отчетов, запрашивающий должен задать первый байт выходного буфера для идентификатора отчета, отличного от нуля. В противном случае запрашиватель должен задать для первого байта выходного буфера нулевое значение.

обработки мини-driver

Irp->UserBuffer указывает на структуру HID_XFER_PACKET, которую драйвер класса HID использует для ввода следующих элементов:

Длина входного буфера

Размер буфера в байтах. Буфер должен быть достаточно большим для хранения входного отчета плюс один дополнительный байт, указывающий идентификатор ненулевого отчета. Если идентификатор отчета не используется, значение идентификатора равно нулю.

Выходной буфер

Элемент Irp->MdlAddress указывает на выделенный запросом выходной буфер, используемый драйвером класса HID для возврата входного отчета. Первый байт буфера, который запрашивающий использует для ввода идентификатора отчета или нуля, не изменяется. Входной отчет возвращается по ((PUCHAR)Irp->MdlAddress + 1).

обработки мини-driver

((PHID_XFER_PACKET)(Irp->UserBuffer))->reportBuffer указывает на выделенный запросом выходной буфер, используемый мини-driver HID для возврата входного отчета.

Длина выходного буфера

Размер выходного отчета.

Блок состояния

Драйвер класса HID задает следующие поля Irp->IoStatus:

  • значение Information равно нулю.
  • состояние имеет значение STATUS_SUCCESS, если передача завершена без ошибок. В противном случае для него задан соответствующий код ошибки NTSTATUS.

обработки мини-driver

Мини-накопители HID, которые выполняют ввод-вывод на устройство, задают следующие поля Irp->IoStatus:

  • сведения задано число байтов, передаваемых с устройства.
  • состояние имеет значение STATUS_SUCCESS, если передача завершена без ошибок. В противном случае для него задан соответствующий код ошибки NTSTATUS.

Мини-накопители HID, которые вызывают другие драйверы с этим IOCTL для выполнения ввода-вывода на устройство, должны убедиться, что поле Information блока состояния правильно и не изменяет содержимое поля состояния.

Требования

Требование Ценность
заголовка hidclass.h (include Hidclass.h)

См. также