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;
Angehörige
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 während der Enumeration vom angeschlossenen Gerät zurückgegeben wird.
CurrentConfigurationValue
Enthält die ID, die mit der SetConfiguration-Anforderung verwendet wird, um anzugeben, dass die aktuelle Konfiguration des Geräts, das mit dem angegebenen Port verbunden ist. Eine Erläuterung dieses Werts finden Sie in Abschnitt 9.4.7 in der Spezifikation universal Serial Bus 3.1, die unter USB-Dokumentbibliothekverfügbar ist.
Speed
Enthält einen Wert vom Typ USB_DEVICE_SPEED, der die Geschwindigkeit des Geräts angibt.
DeviceIsHub
Gibt an, wenn TRUE, dass das an den Port angeschlossene Gerät ein Hub ist.
DeviceAddress
Enthält die usb zugewiesene, busrelative Adresse des Geräts, das an den Anschluss angeschlossen ist.
NumberOfOpenPipes
Gibt die Anzahl der offenen USB-Rohre an, die dem Anschluss zugeordnet sind.
ConnectionStatus
Enthält einen Enumerator vom Typ USB_CONNECTION_STATUS, der den Verbindungsstatus angibt.
PipeList[0]
Enthält ein Array von Strukturen vom Typ USB_PIPE_INFO, das die offenen Rohre 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.
Bemerkungen
Wenn kein Gerät angeschlossen ist, gibt IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EXnur Informationen über den Port zurück. Wenn ein Gerät mit dem Port verbunden ist, IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX Informationen über den Port und 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 Mitglieds. In der erweiterten Struktur gibt das Speed Member die Gerätegeschwindigkeit an.
Das Speed Member der USB_NODE_CONNECTION_INFORMATION_EX-Struktur ist eine UCHAR und kann alle Werte des USB_DEVICE_SPEED Enumerators angeben. Das Speed Mitglied 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 können, 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) |