USB_NODE_CONNECTION_INFORMATION_EX-Struktur (usbioctl.h)
Die USB_NODE_CONNECTION_INFORMATION_EX-Struktur wird in Verbindung mit der IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX-Anforderung verwendet, um Informationen über die Verbindung zu erhalten, die dem angegebenen USB-Anschluss zugeordnet ist.
Syntax
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;
Member
ConnectionIndex
Enthält einen Wert größer oder gleich 1, der die Nummer des Ports angibt.
DeviceDescriptor
Enthält eine Struktur vom Typ USB_DEVICE_DESCRIPTOR , die den USB-Gerätedeskriptor meldet, der vom angeschlossenen Gerät während der Enumeration zurückgegeben wird.
CurrentConfigurationValue
Enthält die ID, die mit der SetConfiguration-Anforderung verwendet wird, um die aktuelle Konfiguration des Geräts anzugeben, das mit dem angegebenen Port verbunden ist. Eine Erläuterung dieses Werts finden Sie im Abschnitt 9.4.7 in der Spezifikation für den universellen seriellen Bus 3.1, die in der USB-Dokumentbibliothek verfügbar ist.
Speed
Enthält einen Wert vom Typ USB_DEVICE_SPEED , der die Geschwindigkeit des Geräts angibt.
DeviceIsHub
Gibt bei TRUE an, dass das an den Port angefügte Gerät ein Hub ist.
DeviceAddress
Enthält die über USB zugewiesene, busrelative Adresse des Geräts, das an den Port angeschlossen ist.
NumberOfOpenPipes
Gibt die Anzahl der geöffneten USB-Leitungen an, die dem Port zugeordnet sind.
ConnectionStatus
Enthält einen Enumerator vom Typ USB_CONNECTION_STATUS, der die Verbindung status angibt.
PipeList[0]
Enthält ein Array von Strukturen vom Typ USB_PIPE_INFO , das die offenen Pipes beschreibt, die dem Port zugeordnet sind. Pipebeschreibungen umfassen den Zeitplanoffset der Pipe und den zugehörigen Endpunktdeskriptor. Diese Informationen können verwendet werden, um die Bandbreitennutzung zu berechnen.
Hinweise
Wenn kein Gerät verbunden ist, gibt IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX nur Informationen über den Port zurück. Wenn ein Gerät mit dem Port verbunden ist , IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX Informationen sowohl über den Port als auch über das verbundene Gerät zurückgibt.
Die USB_NODE_CONNECTION_INFORMATION_EX-Struktur ist eine erweiterte Version von USB_NODE_CONNECTION_INFORMATION. Die beiden Strukturen sind identisch, mit Ausnahme eines Elements. In der erweiterten Struktur gibt der Speed-Member die Gerätegeschwindigkeit an.
Der Speed-Member der USB_NODE_CONNECTION_INFORMATION_EX-Struktur ist eine UCHAR und kann jeden der Werte des USB_DEVICE_SPEED-Enumerators angeben. Der Speed-Member unterstützt bis zu UsbHighSpeed (USB 2.0). Um festzustellen, ob ein Gerät UsbSuperSpeed (USB 3.0) unterstützt, verwenden Sie die USB_NODE_CONNECTION_INFORMATION_EX_V2-Struktur .
Der folgende C++-Codeausschnitt aus dem USBView-Beispiel veranschaulicht, wie Sie ermitteln, ob ein Gerät UsbSuperSpeed (USB 3.0) unterstützt:
// 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;
}
Anforderungen
Anforderung | Wert |
---|---|
Header | usbioctl.h (include Usbioctl.h) |