Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Считывается из регистров USB-устройства с помощью канала управления.
Основной код
Входной буфер
Указатель на структуру 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) |