共用方式為


IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME IOCTL (usbioctl.h)

IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME I/O 要求會查詢總線驅動程式,以取得 USB 主機控制器的裝置名稱。

IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME 是內核模式 I/O 控制要求。 此要求是以USB中樞 PDO 為目標。 此要求必須在PASSIVE_LEVEL的 IRQL 傳送。

主要程序代碼

IRP_MJ_INTERNAL_DEVICE_CONTROL

輸入緩衝區

Parameters.Others.Argument1 應該是將填入主控制器名稱之 USB_HUB_NAME 結構的指標。

輸入緩衝區長度

Parameters.Others.Argument2 應該是 ULONG,指定 Parameters.Others.Argument1中的緩衝區長度(以位元組為單位)。

輸出緩衝區

總線驅動程式會填入 Parameters.Others.Argument1 所指向的緩衝區, 主機控制器裝置名稱。

輸出緩衝區長度

它只會填入 parameters.Others.Argument2 中所指定的長度,

狀態區塊

總線或埠驅動程式會將 Irp->IoStatus.Status 設定為STATUS_SUCCESS或適當的錯誤狀態。

言論

呼叫端必須提供足以保存 USB_HUB_NAME 結構的緩衝區。 Parameters.Others.Argument2 值表示該緩衝區的大小。 成功完成時,USB_HUB_NAMEHubName 成員包含控制器的名稱,而 ActualLength 成員表示控制器名稱字元串的長度。 請注意,ActualLength 不會指出整個 USB_HUB_NAME 結構的大小。 如果 Parameters.Others.Argument 1 中提供的緩衝區不夠大,無法保存字串,HubName 值可能會顯示截斷的字符串。

若要取得保存字串所需的緩衝區大小,請傳送要求兩次。 在第一個要求中,指定至少 sizeof(USB_HUB_NAME) 個字節的緩衝區。 否則,ActualLength 不會指出字串的正確長度,而且要求會失敗併產生STATUS_BUFFER_TOO_SMALL。

第一個要求成功完成之後,請配置 ActualLength + sizeof(ULONG) 個字節的緩衝區,然後再次傳送要求。 要求完成之後,HubName 表示整個控制器名稱字串。

要求

要求 價值
標頭 usbioctl.h

另請參閱

USB_HUB_NAME