IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE IOCTL (usbioctl.h)

Permintaan I/O IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE mendaftarkan driver perangkat multifungsi USB (driver komposit) dengan tumpukan driver USB yang mendasar.

Permintaan ini dikirim oleh driver yang menggantikan driver komposit yang disediakan Microsoft, Usbccgp.sys, dan mengimplementasikan fitur penangguhan fungsi dan bangun jarak jauh, sesuai spesifikasi Universal Serial Bus (USB) 3.0.

IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE adalah permintaan kontrol I/O mode kernel. Permintaan ini menargetkan objek perangkat fisik (PDO) hub USB. Permintaan ini harus dikirim pada tingkat permintaan interupsi (IRQL) PASSIVE_LEVEL.

Kode utama

IRP_MJ_INTERNAL_DEVICE_CONTROL

Buffer input

Parameters.Others.Argument1 adalah penunjuk ke struktur REGISTER_COMPOSITE_DEVICE< penelepon yang dialokasikan dan diinisialisasi yang berisi informasi tentang driver induk. Untuk menginisialisasi struktur, panggil rutinitas USBD_BuildRegisterCompositeDevice .

Anggota AssociatedIrp.SystemBuffer menunjuk ke buffer yang dialokasikan pemanggil yang cukup besar untuk menyimpan array handel fungsi (diketik USBD_FUNCTION_HANDLE) untuk fungsi di perangkat komposit USB. Jumlah elemen dalam array ditunjukkan oleh anggota FunctionCountdari REGISTER_COMPOSITE_DEVICE. Untuk mendapatkan jumlah fungsi, periksa deskriptor yang dikembalikan oleh permintaan get-configuration.

Panjang buffer input

Ukuran struktur REGISTER_COMPOSITE_DEVICE .

Buffer output

Pada output, buffer yang diacu oleh anggota AssociatedIrp.SystemBuffer diisi dengan handel fungsi untuk fungsi di perangkat multifungsi.

Panjang buffer output

Ukuran handel fungsi untuk fungsi di perangkat.

Blok status

Tumpukan driver USB mengatur Irp-IoStatus.Status> ke STATUS_SUCCESS jika permintaan berhasil diselesaikan. STATUS_SUCCESS menunjukkan bahwa handel fungsi valid.

Jika terjadi kesalahan, Irp-IoStatus.Status> berisi status kesalahan yang sesuai. Misalnya, jika driver komposit mengirim permintaan lebih dari sekali, Status diatur ke STATUS_INVALID_DEVICE_REQUEST.

Keterangan

Tujuan IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE adalah agar driver komposit mengirim permintaan pendaftaran ke tumpukan driver USB. Dalam permintaan pendaftaran, driver komposit menentukan jumlah fungsi yang didukung oleh perangkat. Oleh karena itu, Anda harus mengirim permintaan IOCTL_INTERNAL_USB_REGISTER_COMPOSITE_DEVICE setelah menentukan jumlah fungsi. Biasanya, informasi tersebut diambil dalam IRP_MN_START_DEVICE rutin perangkat mulai driver komposit. Perhatikan bahwa jumlah antarmuka dalam konfigurasi dapat menunjukkan jumlah fungsi, tetapi tidak selalu. Perangkat multifungsi tertentu mengekspos beberapa antarmuka yang terkait dengan satu fungsi. Untuk mendapatkan jumlah fungsi, Anda harus memeriksa berbagai deskriptor yang terkait dengan konfigurasi tertentu. Deskriptor tersebut dapat diperoleh melalui permintaan get-descriptor.

Menanggapi permintaan pendaftaran, tumpukan driver USB menyediakan daftar handel untuk fungsi di perangkat. Untuk contoh kode, lihat Cara Mendaftarkan Perangkat Komposit.

Setelah driver komposit terdaftar, driver dapat mengonfigurasi fitur bangun jarak jauh. Dengan menggunakan handel fungsi, driver komposit dapat mengirim permintaan IOCTL_INTERNAL_USB_REQUEST_REMOTE_WAKE_NOTIFICATION untuk mendapatkan pemberitahuan bangun jarak jauh dari tumpukan driver USB, ketika fungsi terkait mengirim sinyal resume.

Untuk menghapus asosiasi driver komposit dengan tumpukan driver USB dan melepaskan semua sumber daya yang dialokasikan untuk pendaftaran, driver harus mengirim permintaan IOCTL_INTERNAL_USB_UNREGISTER_COMPOSITE_DEVICE .

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8
Header usbioctl.h (termasuk Usbioctl.h)
IRQL PASSIVE_LEVEL

Lihat juga

Cara Mendaftarkan Perangkat Komposit

IOCTL_INTERNAL_USB_UNREGISTER_COMPOSITE_DEVICE