estructura USB_NODE_CONNECTION_INFORMATION_EX (usbioctl.h)

La estructura USB_NODE_CONNECTION_INFORMATION_EX se usa junto con la solicitud 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, vea la sección 9.4.7 en la especificación universal de Bus serie 3.1 disponible en la biblioteca de documentos USB.

Speed

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

DeviceIsHub

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

DeviceAddress

Contiene la dirección relativa de 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.

Comentarios

Si no hay ningún dispositivo conectado, IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX simplemente 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 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
Header usbioctl.h (incluya Usbioctl.h)

Consulte también