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) |