USB_NODE_CONNECTION_INFORMATION_EX 構造体 (usbioctl.h)

USB_NODE_CONNECTION_INFORMATION_EX構造体は、指定された USB ポートに関連付けられている接続に関する情報を取得するために、IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX要求と組み合わせて使用されます。

構文

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;

メンバー

ConnectionIndex

ポートの数を指定する 1 以上の値を格納します。

DeviceDescriptor

列挙中に接続されたデバイスによって返される USB デバイス記述子を報告する USB_DEVICE_DESCRIPTOR 型の構造体が含まれます。

CurrentConfigurationValue

指定されたポートに接続されているデバイスの現在の構成を指定するために SetConfiguration 要求で使用される ID を格納します。 この値の説明については、 USB ドキュメント ライブラリで入手できるユニバーサル シリアル バス 3.1 仕様のセクション 9.4.7 を参照してください。

Speed

デバイスの速度を示す USB_DEVICE_SPEED 型の値を格納します。

DeviceIsHub

TRUE の場合、ポートに接続されているデバイスがハブであることを示します。

DeviceAddress

ポートに接続されているデバイスの USB 割り当てバス相対アドレスが含まれます。

NumberOfOpenPipes

ポートに関連付けられている開いている USB パイプの数を示します。

ConnectionStatus

接続状態を示す USB_CONNECTION_STATUS 型の列挙子を格納します。

PipeList[0]

ポートに関連付けられている開いているパイプを記述 するUSB_PIPE_INFO 型の構造体の配列を格納します。 パイプの説明には、パイプのスケジュール オフセットと、関連付けられているエンドポイント記述子が含まれます。 この情報を使用して、帯域幅の使用量を計算できます。

注釈

デバイスが接続されていない場合、 IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX' はポートに関する情報を返すだけです。 デバイスがポートに接続されている場合 IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX は、ポートと接続されているデバイスの両方に関する情報を返します。

USB_NODE_CONNECTION_INFORMATION_EX構造体は、USB_NODE_CONNECTION_INFORMATIONの拡張バージョンです。 1 つのメンバーを除き、2 つの構造体は同じです。 拡張構造では、 Speed メンバーはデバイスの速度を示します。

USB_NODE_CONNECTION_INFORMATION_EX構造体の Speed メンバーは UCHAR であり、USB_DEVICE_SPEED列挙子の値のいずれかを指定できます。 Speed メンバーは、UsbHighSpeed (USB 2.0) までサポートしています。 デバイスが UsbSuperSpeed (USB 3.0) をサポートしているかどうかを確認するには、 USB_NODE_CONNECTION_INFORMATION_EX_V2 構造体を使用します。

USBView サンプルの次の C++ コード スニペットは、デバイスが 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;
}

要件

要件
Header usbioctl.h (Usbioctl.h を含む)

こちらもご覧ください