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) 為目標。

主要程序代碼

IRP_MJ_DEVICE_CONTROL

輸入緩衝區

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)