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_NAME 的 HubName 成員包含控制器的名稱,而 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 |