USB_PORT_CONNECTOR_PROPERTIES 構造体 (usbioctl.h)
USB_PORT_CONNECTOR_PROPERTIES構造体は、特定の SuperSpeed ハブ上のポートに関する情報を取得するために、IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES I/O 制御要求と共に使用されます。
構文
typedef struct _USB_PORT_CONNECTOR_PROPERTIES {
ULONG ConnectionIndex;
ULONG ActualLength;
USB_PORT_PROPERTIES UsbPortProperties;
USHORT CompanionIndex;
USHORT CompanionPortNumber;
WCHAR CompanionHubSymbolicLinkName[1];
} USB_PORT_CONNECTOR_PROPERTIES, *PUSB_PORT_CONNECTOR_PROPERTIES;
メンバー
ConnectionIndex
要求で照会されるポート番号。 ConnectionIndex は呼び出し元によって指定されます。 SuperSpeed ハブに n 個のポートがある場合、ポートには 1 から n の番号が付けられます。 ポートの数を取得するために、呼び出し元は最初に IOCTL_USB_GET_HUB_INFORMATION_EX I/O 制御要求を送信します。 要求は、ハブ上で最も大きいポート番号を取得します。
ActualLength
コンパニオン ハブのシンボリック リンク名を含む文字列を含む 、USB_PORT_CONNECTOR_PROPERTIES 構造体全体を保持するために必要なバイト数。 その文字列は CompanionHubSymbolicLinkName メンバーに 格納されます。 ActualLength 値は、IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES要求によって返され、呼び出し元が受信した情報を保持するバッファーを割り当てるために使用されます。 詳細については、「 IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES」を参照してください。
UsbPortProperties
ポートのプロパティ。 IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES要求が完了すると、UsbPortProperties には、ポートのプロパティと機能を示す 1 つ以上のフラグのビットごとの OR が含まれます。 フラグは 、USB_PORT_PROPERTIESで定義されます。
CompanionIndex
クエリ対象のポートに関連付けられているコンパニオン ポートのインデックス ( ConnectionIndex で指定)。 n 個のコンパニオン ポートがある場合、これらのポートのインデックスは 0 から n から 1 になります。
ポートが複数のコンパニオン ポートにマップされている場合は、複数のクエリで CompanionIndex がインクリメントされ、すべてのコンパニオン ポートが列挙されます。
SuperSpeed ハブと xHCI コントローラーの場合、 CompanionIndex は常に 0 です。 詳細については、「解説」を参照してください。
CompanionPortNumber
CompanionIndex によって指定されるコンパニオン ポートのポート番号。 クエリ対象のポートが別のハブ上のポートと USB コネクタを共有している場合、 CompanionPortNumber はもう一方のハブ上のポートのポート番号を示します。
CompanionHubSymbolicLinkName[1]
USB コネクタを共有するコンパニオン ハブのシンボリック リンクを含む Unicode 文字列。 コンパニオン ハブが存在する場合、 CompanionPortNumber は 0 以外です。 それ以外の場合、 CompanionHubSymbolicLinkName [0] はNULL です。
注釈
SuperSpeed 3.0 ハブには、2 つの独立したハブ実装が含まれています。 1 つは USB 2.0 デバイス用であり、ハブの実装は既存の 2.0 ハブに似ています。 もう 1 つのハブは、SuperSpeed デバイス専用です。 USB 2.0 および 3.0 バスシグナリングは電気的に独立しているため、これらのハブは両方とも同時に動作します。 そのため、SuperSpeed ハブがホストに接続されている場合、Windows は 2 つのハブを個別に列挙します。1 つのハブは USB 2.0 ポートに、もう 1 つのハブは USB 3.0 ポートに関連付けられています。 各ハブには、ダウンストリーム ポートとアップストリーム ポートがあります。 USB 物理コネクタは、これら 2 つのハブ実装に関連付けられているポート間で共有されます。
同様に、xHCI コントローラーは、SuperSpeed、高速、フルスピード、および低速デバイスを処理できる必要があります。 USB 3.0 仕様では、xHCI コントローラーに、USB 3.0 と USB 2.0 のバス速度用にそれぞれ 2 つの独立した実行ユニットが含まれている必要があります。 USB 3.0 実行ユニットは、バス上の SuperSpeed トラフィックを処理します。 USB 2.0 実行ユニットは、低速、フル、高速のトラフィックを処理する必要があります。 この要件は、さまざまな方法で満たすことができます。 たとえば、1 つの実装では、USB 2.0 実行ユニットにダウンストリーム USB 1.1 実行ユニットまたはダウンストリーム USB 2.0 ハブを含めることができます。 もう 1 つの実行ユニットは、バス上の SuperSpeed トラフィックを処理します。 たとえば、1 つの実装では、xHCI コントローラーは、フルスピードおよび低速のトラフィックを処理するためのトランザクション トランスレーターを備えたダウンストリーム USB 2.0 ハブ (USB 2.0 ホスト コントローラーではなく) を持つことができます。 そのダウンストリーム ハブは、コネクタを SuperSpeed ルート ハブのポートと共有します。
USB コネクタが共有されている場合、 IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES I/O 制御要求を介して照会されるポートは ConnectionIndex で指定され、コネクタを共有するポートは コンパニオン ポートと呼ばれます。 要求が完了すると、USB_PORT_CONNECTOR_PROPERTIESの CompanionIndex、CompanionPortNumber、および CompanionHubSymbolicLinkName メンバーを使用して、そのような場合のポート ルーティングを決定できます。
クエリ対象のポートに複数のコンパニオン ポートが関連付けられている場合、アプリケーションはループ内で IOCTL_USB_GET_PORT_CONNECTOR_PROPERTIES I/O 制御要求を送信し、各イテレーションで CompanionIndex 値をインクリメントすることで、すべてのコンパニオン ポートに関する情報を取得できます。 すべてのポートが列挙され、 CompanionIndex で指定されたインデックスに関連付けられているポートがない場合、要求は正常に完了し、 CompanionPortNumber は 0 に設定され、 CompanionHubSymbolicLinkName は NULL です。
特定のポートに接続されているデバイスの動作速度に関する情報を取得するために、アプリケーションは IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 I/O 制御要求を送信できます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 |
サポートされている最小のサーバー | サポートなし |
Header | usbioctl.h (Usbioctl.h を含む) |
こちらもご覧ください
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2