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)

Weitere Informationen