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.Argument1 中提供的緩衝區不夠大,無法保存字串, HubName 值可能會顯示截斷的字串。
若要取得保存字串所需的緩衝區大小,請傳送要求兩次。 在第一個要求中,指定至少 sizeof(USB_HUB_NAME)
位元組的緩衝區。 否則, ActualLength 不會指出字串的正確長度,而且要求會因為STATUS_BUFFER_TOO_SMALL而失敗。
在第一個要求成功完成之後,請配置位元組的 ActualLength + sizeof(ULONG)
緩衝區,然後再次傳送要求。 要求完成之後, HubName 會指出整個控制器名稱字串。
規格需求
需求 | 值 |
---|---|
標頭 | usbioctl.h |