Freigeben über


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)

Siehe auch