Compartir a través de


IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 IOCTL (usbioctl.h)

Una aplicación envía el IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 control de E/S para recuperar información sobre los protocolos admitidos por un puerto USB determinado en un concentrador. La solicitud también recupera la capacidad 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 del concentrador de bus serie universal (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 autor de la llamada debe especificar el número de puerto en el miembro de 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 autor de la llamada debe establecer una marca de protocolo en el miembro supportedUsbProtocols de (vea 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 autor de la llamada 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 autor de la llamada 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 a la condición de error adecuada, como STATUS_INVALID_PARAMETER o STATUS_INSUFFICIENT_RESOURCES.

Observaciones

La IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 solicitud 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 SupportedUsbProtocols.Usb200 miembro 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 está establecido en 1.

Tenga en cuenta que supportedUsbProtocols.Usb110 siempre está establecido en 1 para concentradores de alta velocidad y de velocidad completa. Esto se debe a que un concentrador compatible con alta velocidad admite el protocolo USB 1.1 mediante 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 son, el miembro Flags.DeviceIsSuperSpeedCapableOrHigher se establece en 1. Si el dispositivo conectado al puerto funciona actualmente en SuperSpeed, DeviceIsOperatingAtSuperSpeedOrHigher está establecido en 1.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 8
servidor mínimo admitido No se admite ninguna
encabezado de usbioctl.h (incluya Usbioctl.h)