Compartir a través de


IOCTL_READ_REGISTERS IOCTL (usbscan.h)

Lee los registros del dispositivo USB mediante la canalización de control.

Código principal

IRP_MJ_DEVICE_CONTROL

Búfer de entrada

Puntero a una estructura de IO_BLOCK .

Longitud del búfer de entrada

Tamaño del búfer de entrada.

Búfer de salida

Puntero a un búfer para recibir el contenido del registro.

Longitud del búfer de salida

Tamaño del búfer de salida. El valor debe coincidir con el contenido del miembro uLength de la estructura IO_BLOCK.

Bloque de estado

Irp->IoStatus.Status se establece en STATUS_SUCCESS si la solicitud se realiza correctamente. De lo contrario, estado de la condición de error adecuada como código NTSTATUS .

Comentarios

Parámetros deviceIoControl

Cuando se llama a la función DeviceloControl con el código de control de E/S de IOCTL_READ_REGISTERS, el autor de la llamada debe especificar la dirección de una estructura de IO_BLOCK como parámetro lpInBuffer de la función.

Con el contenido IO_BLOCK, el controlador en modo kernel crea un URB que contiene una estructura _URB_CONTROL_VENDOR_OR_CLASS_REQUEST .

En la tabla siguiente se indican los valores asignados a _URB_CONTROL_VENDOR_OR_CLASS_REQUEST miembros de la estructura.

Miembro de estructura Valor asignado
TransferFlags 1
TransferBufferLength pIoBlock-uLength>
TransferBuffer Argumento lpOutBuffer de DeviceIoControl.
TransferBufferMDL NULL
RequestTypeReservedBits 0xC0
Solicitud (pIoBlock->uLength> 1) ? 0x04 : 0x0C
Valor (SHORT) pIoBlock-uOffset>
Index pIoBlock-uIndex>

Para obtener más información, consulte Acceso a controladores de Kernel-Mode para dispositivos de imagen fija.

Requisitos

Requisito Valor
Header usbscan.h (incluya Usbscan.h)