IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 IOCTL (usbioctl.h)
應用程式會傳送 IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 I/O 控制項,以擷取中樞上特定 USB 埠所支援的通訊協議相關信息。 要求也會擷取埠的速度功能。
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 是使用者模式 I/O 控制要求。 此要求的目標為 USB) 中樞裝置 (GUID_DEVINTERFACE_USB_HUB) 的通用序列總線 (。
主要程序代碼
輸入緩衝區
AssociatedIrp.SystemBuffer 指向呼叫端配置的 USB_NODE_CONNECTION_INFORMATION_EX_V2 結構。
在輸入時,呼叫端必須設定結構成員,如下所示:
- 呼叫端必須在 ConnectionIndex 成員中指定埠號碼。 ConnectionIndex 必須是介於 1 到 n 範圍內的值,其中 n 是先前 IOCTL_USB_GET_HUB_INFORMATION_EX I/O 控制要求中擷取的最高埠號碼。
- 呼叫端必須在 SupportedUsbProtocols 成員中設定通訊協定旗標, (請參閱 USB_PROTOCOLS) 。 在 Windows 8 中,SupportedUsbProtocols.Usb300 必須設定為 1。 否則,要求會失敗,並出現STATUS_INVALID_PARAMETER錯誤碼。
- 呼叫端必須將 Length 成員設定為 AssociatedIrp.SystemBuffer 所指向之呼叫端配置緩衝區的大小,以位元組為單位。 緩衝區的大小必須是
sizeof (USB_NODE_CONNECTION_INFORMATION_EX_V2)
。
輸入緩衝區長度
Parameters.DeviceIoControl.InputBufferLength 成員會指出呼叫端配置緩衝區的大小,以位元組為單位,其大小等於 sizeof(USB_NODE_CONNECTION_INFORMATION_EX_V2)
。
輸出緩衝區
在輸出中,AssociatedIrp.SystemBuffer 所指向的USB_NODE_CONNECTION_INFORMATION_EX_V2結構會填入連結裝置的相關信息。
輸出緩衝區長度
Parameters.DeviceIoControl.OutputBufferLength 成員會指出輸出緩衝區 SystemBuffer 的大小,以位元組為單位。
狀態區塊
如果要求成功,USB 堆疊會將 Irp-IoStatus.Status> 設定為STATUS_SUCCESS。 否則,USB 驅動程式堆疊會將 [狀態 ] 設定為適當的錯誤狀況,例如STATUS_INVALID_PARAMETER或STATUS_INSUFFICIENT_RESOURCES。
備註
如果裝置已連結至埠, IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 要求會查詢指定的埠中樞,以取得埠所支援的通訊協定和作業速度功能的相關信息。
如果要求順利完成,USB_NODE_CONNECTION_INFORMATION_EX_V2的 SupportedUsbProtocols.Usb200 成員表示埠支持的通訊協定。 例如,如果埠支援 USB 2.0 規格所定義的訊號通訊協定, 則 SupportedUsbProtocols.Usb200 會設定為 1。
請注意,針對高速和全速中樞, SupportedUsbProtocols.Usb110 一律設定為 1。 這是因為支援高速的中樞透過分割交易和交易翻譯工具支援USB 1.1通訊協定。 針對USB 3.0埠,SupportedUsbProtocols.Usb110 永遠不會設定為1。
此外,要求也會判斷埠和連接的裝置是否能夠在 SuperSpeed 上運作。 如果是, Flags.DeviceIsSuperSpeedCapableOrHigher 成員會設定為 1。 如果連結至埠的裝置目前在 SuperSpeed 上運作, 則 DeviceIsOperatingAtSuperSpeedOrHigher 會設定為 1。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 8 |
最低支援的伺服器 | 都不支援 |
標頭 | usbioctl.h (包含 Usbioctl.h) |