Compartir a través de


estructura USB_NODE_CONNECTION_INFORMATION_EX (usbioctl.h)

La estructura USB_NODE_CONNECTION_INFORMATION_EX se usa junto con la solicitud de IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX para obtener información sobre la conexión asociada al puerto USB indicado.

Sintaxis

typedef struct _USB_NODE_CONNECTION_INFORMATION_EX {
  ULONG                 ConnectionIndex;
  USB_DEVICE_DESCRIPTOR DeviceDescriptor;
  UCHAR                 CurrentConfigurationValue;
  UCHAR                 Speed;
  BOOLEAN               DeviceIsHub;
  USHORT                DeviceAddress;
  ULONG                 NumberOfOpenPipes;
  USB_CONNECTION_STATUS ConnectionStatus;
  USB_PIPE_INFO         PipeList[0];
} USB_NODE_CONNECTION_INFORMATION_EX, *PUSB_NODE_CONNECTION_INFORMATION_EX;

Miembros

ConnectionIndex

Contiene un valor mayor o igual que 1 que especifica el número del puerto.

DeviceDescriptor

Contiene una estructura de tipo USB_DEVICE_DESCRIPTOR que informa del descriptor de dispositivo USB devuelto por el dispositivo conectado durante la enumeración.

CurrentConfigurationValue

Contiene el identificador usado con la solicitud SetConfiguration para especificar la configuración actual del dispositivo conectado al puerto indicado. Para obtener una explicación de este valor, consulte la sección 9.4.7 en la especificación Universal Serial Bus 3.1 disponible en biblioteca de documentos USB.

Speed

Contiene un valor de tipo USB_DEVICE_SPEED que indica la velocidad del dispositivo.

DeviceIsHub

Indica, cuando TRUE, que el dispositivo conectado al puerto es un concentrador.

DeviceAddress

Contiene la dirección relativa al bus asignada por USB del dispositivo que está conectado al puerto.

NumberOfOpenPipes

Indica el número de canalizaciones USB abiertas asociadas al puerto.

ConnectionStatus

Contiene un enumerador de tipo USB_CONNECTION_STATUS que indica el estado de conexión.

PipeList[0]

Contiene una matriz de estructuras de tipo USB_PIPE_INFO que describe las canalizaciones abiertas asociadas al puerto. Las descripciones de canalización incluyen el desplazamiento de programación de la canalización y el descriptor de punto de conexión asociado. Esta información se puede usar para calcular el uso del ancho de banda.

Observaciones

Si no hay ningún dispositivo conectado, IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EXsimplemente devuelve información sobre el puerto. Si un dispositivo está conectado al puerto IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX devuelve información sobre el puerto y el dispositivo conectado.

La estructura USB_NODE_CONNECTION_INFORMATION_EX es una versión extendida de USB_NODE_CONNECTION_INFORMATION. Las dos estructuras son idénticas, excepto para un miembro. En la estructura extendida, el miembro Speed indica la velocidad del dispositivo.

El miembro Speed de la estructura USB_NODE_CONNECTION_INFORMATION_EX es un UCHAR y puede especificar cualquiera de los valores del enumerador de USB_DEVICE_SPEED. El miembro Speed admite hasta usbHighSpeed (USB 2.0). Para determinar si un dispositivo admite UsbSuperSpeed (USB 3.0), use la estructura USB_NODE_CONNECTION_INFORMATION_EX_V2.

El siguiente fragmento de código de C++ del ejemplo USBView muestra cómo determinar si un dispositivo admite UsbSuperSpeed (USB 3.0):

// Since the USB_NODE_CONNECTION_INFORMATION_EX is used to display
// the device speed, but the hub driver doesn't support indication
// of superspeed, we overwrite the value if the super speed
// data structures are available and indicate the device is operating
// at SuperSpeed.

if (connectionInfoEx->Speed == UsbHighSpeed 
    && connectionInfoExV2 != NULL 
    && (connectionInfoExV2->Flags.DeviceIsOperatingAtSuperSpeedOrHigher ||
        connectionInfoExV2->Flags.DeviceIsOperatingAtSuperSpeedPlusOrHigher))
{
    connectionInfoEx->Speed = UsbSuperSpeed;
}

Requisitos

Requisito Valor
encabezado de usbioctl.h (incluya Usbioctl.h)

Consulte también