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 Irp- STATUS_SUCCESS。 否則,USB 驅動程式堆疊會將狀態 設定為適當的錯誤狀況,例如STATUS_INVALID_PARAMETER或STATUS_INSUFFICIENT_RESOURCES。
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 要求會查詢指定的埠中樞,以取得埠所支援的通訊協定和作業速度功能的相關信息,如果裝置已連結至埠。
如果要求成功完成,SupportedUsbProtocols.Usb200 成員 USB_NODE_CONNECTION_INFORMATION_EX_V2 表示埠支援的通訊協定。 例如,如果埠支援 USB 2.0 規格所定義的訊號通訊協定,則 SupportedUsbProtocols.Usb200 設為 1。
請注意,支援的UsbProtocols.Usb110 一律會針對高速和全速中樞設定為 1。 這是因為支援高速的中樞透過分割交易和交易轉譯器支援USB 1.1通訊協定。 支援的UsbProtocols.Usb110 永遠不會針對USB 3.0埠設定為1。
此外,要求也會判斷埠和連接的裝置是否能夠在 SuperSpeed 上運作。 如果是,Flags.DeviceIsSuperSpeedCapableOrHigher 成員會設定為 1。 如果連接到埠的裝置目前在 SuperSpeed 上運作,則 DeviceIsOperatingAtSuperSpeedOrHigher 設定為 1。
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 8 |
支援的最低伺服器 | 不支援 |
標頭 | usbioctl.h (包括 Usbioctl.h) |