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> в байтах. Этот размер должен иметь значение sizeof(ULONG).

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

Размер ULONG.

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

Нет.

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

Нет.

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

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

Требования

Требование Значение
Заголовок hidclass.h (включая Hidclass.h)

См. также раздел

HidD_GetNumInputBuffers