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


IOCTL_READ_REGISTERS IOCTL (usbscan.h)

Считывается из регистров USB-устройства с помощью канала управления.

Основной код

IRP_MJ_DEVICE_CONTROL

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

Указатель на структуру IO_BLOCK.

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

Размер входного буфера.

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

Указатель на буфер для получения содержимого регистра.

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

Размер выходного буфера. Значение должно соответствовать содержимому элемента uLength структуры IO_BLOCK.

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

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

Замечания

Параметры DeviceIoControl

Когда функция DeviceloControl вызывается с кодом элемента управления IOCTL_READ_REGISTERS ввода-вывода, вызывающий объект должен указать адрес структуры IO_BLOCK в качестве параметра функции lpInBuffer.

С помощью содержимого IO_BLOCK драйвер в режиме ядра создает URB, содержащий структуру _URB_CONTROL_VENDOR_OR_CLASS_REQUEST.

В следующей таблице указаны значения, назначенные элементам структуры _URB_CONTROL_VENDOR_OR_CLASS_REQUEST.

Элемент структуры Присвоено значение
TransferFlags 1
TransferBufferLength pIoBlock—>uLength
TransferBuffer аргумент DeviceIoControllpOutBuffer.
TransferBufferMDL NULL
RequestTypeReservedBits 0xC0
запроса (pIoBlock->uLength> 1) ? 0x04 : 0x0C
значение (SHORT)pIoBlock->uOffset
индекс pIoBlock—>uIndex

Дополнительные сведения см. в статье Доступ к драйверам Kernel-Mode для устройств с тем же изображением.

Требования

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