USBD_SelectConfigUrbAllocateAndBuild (usbdlib.h)
USBD_SelectConfigUrbAllocateAndBuild rutin mengalokasikan dan memformat struktur URB yang diperlukan untuk memilih konfigurasi untuk perangkat USB.
Sintaks
NTSTATUS USBD_SelectConfigUrbAllocateAndBuild(
[in] USBD_HANDLE USBDHandle,
[in] PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
[in] PUSBD_INTERFACE_LIST_ENTRY InterfaceList,
[out] PURB *Urb
);
Parameter
[in] USBDHandle
Handel USBD yang diambil oleh driver klien dalam panggilan sebelumnya ke rutinitas USBD_CreateHandle .
[in] ConfigurationDescriptor
Penunjuk ke struktur USB_CONFIGURATION_DESCRIPTOR yang dialokasikan penelepon yang berisi deskriptor konfigurasi untuk konfigurasi yang akan dipilih. Biasanya, driver klien mengirimkan URB jenis URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE (lihat _URB_CONTROL_DESCRIPTOR_REQUEST) untuk mengambil informasi tentang konfigurasi, antarmuka, titik akhir, vendor, dan deskriptor khusus kelas dari perangkat USB. Ketika driver klien menentukan USB_CONFIGURATION_DESCRIPTOR_TYPE sebagai jenis deskriptor, permintaan mengambil semua informasi perangkat dalam struktur USB_CONFIGURATION_DESCRIPTOR . Driver kemudian meneruskan pointer yang diterima ke struktur USB_CONFIGURATION_DESCRIPTOR dalam parameter ConfigurationDescriptor .
[in] InterfaceList
Penunjuk ke elemen pertama dari array struktur USBD_INTERFACE_LIST_ENTRY yang dialokasikan pemanggil. Panjang array tergantung pada jumlah antarmuka dalam deskriptor konfigurasi. Untuk informasi selengkapnya, lihat Keterangan.
[out] Urb
Penunjuk ke struktur URB yang menerima URB yang dialokasikan oleh USBD_SelectConfigUrbAllocateAndBuild. Driver klien harus membebaskan URB ketika driver telah selesai menggunakannya dengan memanggil USBD_UrbFree.
Nilai kembali
Rutinitas USBD_SelectConfigUrbAllocateAndBuild mengembalikan kode status NT.
Nilai yang mungkin termasuk, tetapi tidak terbatas pada, kode status yang tercantum dalam tabel berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Permintaan berhasil. |
|
Penelepon melewati nilai parameter yang tidak valid. USBDHandle atau Urb adalah NULL. |
|
Tidak tersedia cukup memori untuk menyelesaikan permintaan. |
Keterangan
Sebelum memanggil USBD_SelectConfigUrbAllocateAndBuild, driver klien harus melakukan tugas berikut:
- Dapatkan jumlah antarmuka dalam konfigurasi. Informasi ini terkandung dalam anggota bNumInterfaces dari struktur USB_CONFIGURATION_DESCRIPTOR yang diacu oleh ConfigurationDescriptor.
- Buat array struktur USBD_INTERFACE_LIST_ENTRY . Jumlah elemen dalam array harus satu lebih dari jumlah antarmuka. Inisialisasi array dengan memanggil RtlZeroMemory.
- Dapatkan deskriptor antarmuka untuk setiap antarmuka (atau pengaturan alternatifnya) dalam konfigurasi. Anda dapat memperoleh deskriptor antarmuka tersebut dengan memanggil USBD_ParseConfigurationDescriptorEx.
- Untuk setiap elemen (kecuali elemen terakhir) dalam array, atur anggota InterfaceDescriptor ke alamat deskriptor antarmuka. Untuk elemen pertama dalam array, atur anggota InterfaceDescriptor ke alamat deskriptor antarmuka yang mewakili antarmuka pertama dalam konfigurasi. Demikian pula untuk elemen nth dalam array, atur anggota InterfaceDescriptor ke alamat deskriptor antarmuka yang mewakili antarmuka ke-ndalam konfigurasi.
- Anggota InterfaceDescriptor dari elemen terakhir harus diatur ke NULL.
- Membuat URB dan mengisinya dengan informasi tentang konfigurasi yang ditentukan, antarmuka dan titik akhirnya, dan mengatur jenis permintaan ke URB_FUNCTION_SELECT_CONFIGURATION.
- Mengisi struktur USBD_INTERFACE_INFORMATION dalam URB untuk setiap antarmuka.
- Mengatur anggota Antarmuka dari elemen nth dari array USBD_INTERFACE_LIST_ENTRY yang disediakan pemanggil ke alamat struktur USBD_INTERFACE_INFORMATION yang sesuai dalam URB.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Membutuhkan WDK untuk Windows 8. Menargetkan Windows Vista dan versi sistem operasi Windows yang lebih baru. |
Target Platform | Desktop |
Header | usbdlib.h |
Pustaka | Usbdex.lib |
IRQL | DISPATCH_LEVEL |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk