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


IOCTL_SET_NUM_DEVICE_INPUT_BUFFERS IOCTL (hidclass.h)

Запрос IOCTL_SET_NUM_DEVICE_INPUT_BUFFERS задает количество буферов для очереди входных отчетов коллекции верхнего уровня.

Каждая очередь входных отчетов реализуется как кольцевой буфер. Если коллекция передает данные драйверу класса HID быстрее, чем драйвер может прочитать его, некоторые данные могут быть потеряны. Чтобы предотвратить потерю этого типа, можно использовать запрос IOCTL_SET_NUM_DEVICE_INPUT_BUFFERS для настройки количества буферов, содержащихся в очереди входных отчетов. Драйвер класса HID требует не менее двух входных буферов. В Windows 2000 максимальное количество входных буферов, поддерживаемых драйвером класса HID, равно 200, а в Windows XP и более поздних версиях — максимальное количество входных буферов, поддерживаемых драйвером класса HID, равно 512. Число входных буферов по умолчанию равно 32.

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

Основной код

IRP_MJ_DEVICE_CONTROL

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

Irp->AssociatedIrp.SystemBuffer указывает на входной буфер размера ULONG, который получает новое число буферов для очереди входных отчетов.

Parameters.DeviceIoControl.InputBufferLength в расположении стека ввода-вывода iRP содержит размер входного буфера в Irp->AssociatedIrp.SystemBuffer. Этот размер должен быть размер(ULONG).

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

Размер ULONG.

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

Никакой.

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

Никакой.

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

Если запрос выполнен успешно, драйвер класса HID задает поле состояния Irp->IoStatus для STATUS_SUCCESS; В противном случае оно задает поле состояния соответствующим кодом ошибки NTSTATUS.

Требования

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

См. также

HidD_GetNumInputBuffers