Share via


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

IRP_MJ_DEVICE_CONTROL

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)