IOCTL_HID_SET_OUTPUT_REPORT IOCTL (hidclass.h)
Запрос IOCTL_HID_SET_OUTPUT_REPORT отправляет выходной отчет в коллекцию верхнего уровня.
Общие сведения об устройствах HIDClass см. в разделе Коллекции HID.
Основной код
Входной буфер
Элементу Parameters.DeviceIoControl.InputBufferLength
присваивается размер в байтах выделенного инициатором запроса входного буфера, который содержит выходной отчет класса HID.
Размер входного буфера в байтах. Буфер должен быть достаточно большим, чтобы вместить выходной отчет плюс один дополнительный байт, указывающий ненулевой идентификатор отчета. Если идентификатор отчета не используется, значение идентификатора равно нулю.
Элемент Irp->AssociatedIrp.SystemBuffer
указывает на входной буфер, содержащий выходной отчет. Если коллекция включает идентификаторы отчетов, инициатор запроса должен задать для первого байта буфера ненулевой идентификатор отчета. В противном случае инициатор запроса должен задать для первого байта нулевое значение. Выходной отчет находится по адресу ((PUCHAR)ReportBuffer + 1)
.
Обработка мини-отвертки
Irp->UserBuffer
указывает на HID_XFER_PACKET структуру, используемую драйвером класса HID для ввода следующих элементов:
Длина входного буфера
Размер входного буфера в байтах. Буфер должен быть достаточно большим, чтобы вместить выходной отчет плюс один дополнительный байт, указывающий ненулевой идентификатор отчета. Если идентификатор отчета не используется, значение идентификатора равно нулю.
Обработка мини-отвертки
Размер структуры HID_XFER_PACKET .
Выходной буфер
Нет.
Длина выходного буфера
Нет.
Блок состояния
Драйвер класса HID задает следующие поля :Irp->IoStatus
- Сведения равны нулю.
- Состояние устанавливается в STATUS_SUCCESS, если передача выполнена без ошибок. В противном случае устанавливается соответствующий код ошибки NTSTATUS.
Обработка мини-отвертки
Мини-накопители HID, которые выполняют ввод-вывод на устройство, задают следующие поля Irp->IoStatus
:
- Для сведений задается количество байтов, передаваемых на устройство.
- Состояние устанавливается в STATUS_SUCCESS, если передача выполнена без ошибок. В противном случае устанавливается соответствующий код ошибки NTSTATUS.
Мини-накопители HID, которые вызывают другие драйверы с этим IOCTL для выполнения операций ввода-вывода, должны убедиться, что поле Information блока состояния является правильным и не изменяет содержимое поля Состояние .
Требования
Требование | Значение |
---|---|
Заголовок | hidclass.h (включая Hidclass.h) |