IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 IOCTL (usbioctl.h)
Una aplicación envía el control de E/S de IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 para recuperar información sobre los protocolos admitidos por un puerto USB determinado en un concentrador. La solicitud también recupera la funcionalidad de velocidad del puerto.
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 es una solicitud de control de E/S en modo de usuario. Esta solicitud tiene como destino el dispositivo concentrador universal de bus serie (USB) (GUID_DEVINTERFACE_USB_HUB).
Código principal
Búfer de entrada
AssociatedIrp.SystemBuffer apunta a una estructura de USB_NODE_CONNECTION_INFORMATION_EX_V2 asignada por el autor de la llamada.
En la entrada, el autor de la llamada debe establecer los miembros de la estructura de la siguiente manera:
- El llamador debe especificar el número de puerto en el miembro ConnectionIndex . ConnectionIndex debe ser un valor del intervalo de 1 a n, donde n es el número de puerto más alto recuperado en una solicitud de control de E/S de IOCTL_USB_GET_HUB_INFORMATION_EX anterior.
- El llamador debe establecer una marca de protocolo en el miembro SupportedUsbProtocols (consulte USB_PROTOCOLS). En Windows 8, SupportedUsbProtocols.Usb300 debe establecerse en 1. De lo contrario, se produce un error en la solicitud con el código de error STATUS_INVALID_PARAMETER.
- El llamador debe establecer el miembro Length en el tamaño, en bytes, del búfer asignado por el llamador al que apunta AssociatedIrp.SystemBuffer. El tamaño del búfer debe ser
sizeof (USB_NODE_CONNECTION_INFORMATION_EX_V2)
.
Longitud del búfer de entrada
El miembro Parameters.DeviceIoControl.InputBufferLength indica el tamaño, en bytes, del búfer asignado por el llamador cuyo tamaño es igual a sizeof(USB_NODE_CONNECTION_INFORMATION_EX_V2)
.
Búfer de salida
En la salida, la estructura de USB_NODE_CONNECTION_INFORMATION_EX_V2 a la que apunta AssociatedIrp.SystemBuffer se rellena con información sobre el dispositivo conectado.
Longitud del búfer de salida
El miembro Parameters.DeviceIoControl.OutputBufferLength indica el tamaño, en bytes, del búfer de salida SystemBuffer.
Bloque de estado
La pila USB establece Irp-IoStatus.Status> en STATUS_SUCCESS si la solicitud se realiza correctamente. De lo contrario, la pila del controlador USB establece Estado en la condición de error adecuada, como STATUS_INVALID_PARAMETER o STATUS_INSUFFICIENT_RESOURCES.
Comentarios
La solicitud IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 consulta el concentrador del puerto especificado para obtener información sobre los protocolos admitidos por el puerto y la funcionalidad de velocidad de funcionamiento, si un dispositivo está conectado al puerto.
Si la solicitud se completa correctamente, el miembro SupportedUsbProtocols.Usb200 de USB_NODE_CONNECTION_INFORMATION_EX_V2 indica los protocolos admitidos por el puerto. Por ejemplo, si el puerto admite el protocolo de señalización definido por la especificación USB 2.0, SupportedUsbProtocols.Usb200 se establece en 1.
Tenga en cuenta que SupportedUsbProtocols.Usb110 siempre está establecido en 1 para concentradores de alta velocidad y velocidad completa. Esto se debe a que un concentrador compatible con alta velocidad admite el protocolo USB 1.1 a través de transacciones divididas y traductores de transacciones. SupportedUsbProtocols.Usb110 nunca se establece en 1 para un puerto USB 3.0.
Además, la solicitud también determina si el puerto y el dispositivo conectado son capaces de funcionar en SuperSpeed. Si lo son, el miembro Flags.DeviceIsSuperSpeedCapableOrHigher se establece en 1. Si el dispositivo conectado al puerto funciona actualmente en SuperSpeed, DeviceIsOperatingAtSuperSpeedOrHigher se establece en 1.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 8 |
Servidor mínimo compatible | No se admite ninguno |
Encabezado | usbioctl.h (incluya Usbioctl.h) |