共用方式為


IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE IOCTL (usbioctl.h)

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

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

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

主要程序代碼

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 會設定為 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