共用方式為


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.Argument1 中提供的緩衝區不夠大,無法保存字串, HubName 值可能會顯示截斷的字串。

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

在第一個要求成功完成之後,請配置位元組的 ActualLength + sizeof(ULONG) 緩衝區,然後再次傳送要求。 要求完成之後, HubName 會指出整個控制器名稱字串。

規格需求

需求
標頭 usbioctl.h

另請參閱

USB_HUB_NAME