共用方式為


IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE IOCTL (usbioctl.h)

IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE I/O 要求會向基礎 USB 驅動程式堆疊註冊 USB 多功能裝置 (複合驅動程式) 的驅動程式。

此要求是由驅動程式所傳送,此驅動程式會根據通用序列總線 (USB) 3.0 規格來取代Microsoft提供的複合驅動程式 Usbccgp.sys,並實作函式暫止和遠端喚醒功能。

IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE 是內核模式 I/O 控制要求。 此要求是以 USB 中樞實體裝置物件 (PDO) 為目標。 此要求必須在PASSIVE_LEVEL的中斷要求層級 (IRQL) 傳送。

主要程序代碼

IRP_MJ_INTERNAL_DEVICE_CONTROL

輸入緩衝區

Parameters.Others.Argument1 是呼叫端配置和初始化之 REGISTER_COMPOSITE_DEVICE< 結構的指標,其中包含父驅動程式的相關信息。 若要初始化 結構,請呼叫 USBD_BuildRegisterCompositeDevice 例程。

AssociatedIrp.SystemBuffer 成員指向呼叫端配置的緩衝區,足以容納 USB 複合裝置中函式的函式句柄數位(具類型USBD_FUNCTION_HANDLE)。 陣列中的元素數目是由 REGISTER_COMPOSITE_DEVICEFunctionCount 成員表示。 若要取得函式數目,請檢查 get-configuration 要求所傳回的描述項。

輸入緩衝區長度

REGISTER_COMPOSITE_DEVICE 結構的大小。

輸出緩衝區

在輸出中,AssociatedIrp.SystemBuffer 所指向的緩衝區會填入多重函式裝置中函式的函式句柄。

輸出緩衝區長度

裝置中函式的函式句柄大小。

狀態區塊

如果要求順利完成,USB 驅動程式堆疊會將 Irp->IoStatus.Status 設定為STATUS_SUCCESS。 STATUS_SUCCESS表示函式句柄有效。

如果發生錯誤,Irp->IoStatus.Status 包含適當的錯誤狀態。 例如,如果復合驅動程式多次傳送要求,狀態 會設定為STATUS_INVALID_DEVICE_REQUEST。

言論

IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE 的目的是讓複合驅動程式將註冊要求傳送至USB驅動程式堆疊。 在註冊要求中,複合驅動程式會指定裝置支援的函式數目。 因此,在判斷函式數目之後,您必須傳送 IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE 要求。 一般而言,該資訊會在複合驅動程式的啟動裝置例程中擷取,IRP_MN_START_DEVICE。 請注意,組態 中的介面數目可以 指出函式數目,但不一定。 某些多重函式裝置會公開多個與一個函式相關的介面。 若要取得函式數目,您必須檢查與特定組態相關的各種描述項。 這些描述元可以透過 get-descriptor 要求取得。

為了回應註冊要求,USB 驅動程式堆疊會提供裝置中函式的句柄清單。 如需程式代碼範例,請參閱 如何註冊複合裝置

註冊複合驅動程序之後,驅動程式可以設定遠端喚醒功能。 透過使用函式句柄,複合驅動程式可以傳送要求 IOCTL_INTERNAL_USB_REQUEST_REMOTE_WAKE_NOTIFICATION,以在相關聯的函式傳送繼續訊號時,從 USB 驅動程式堆疊取得遠端喚醒通知。

若要移除複合驅動程式與 USB 驅動程式堆疊的關聯,並釋放配置註冊的所有資源,驅動程式必須傳送 IOCTL_INTERNAL_USB_UNREGISTER_COMPOSITE_DEVICE 要求。

要求

要求 價值
最低支援的用戶端 Windows 8
標頭 usbioctl.h (包括 Usbioctl.h)
IRQL PASSIVE_LEVEL

另請參閱

如何註冊複合裝置

IOCTL_INTERNAL_USB_UNREGISTER_COMPOSITE_DEVICE