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 を含む) |