USBD_SelectConfigUrbAllocateAndBuild (usbdlib.h)

USBD_SelectConfigUrbAllocateAndBuild rutin mengalokasikan dan memformat struktur URB yang diperlukan untuk memilih konfigurasi untuk perangkat USB.

Catatan Di Windows 8, USBD_SelectConfigUrbAllocateAndBuild menggantikan USBD_CreateConfigurationRequestEx dan USBD_CreateConfigurationRequest.
 

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
STATUS_SUCCESS
Permintaan berhasil.
STATUS_INVALID_PARAMETER
Penelepon melewati nilai parameter yang tidak valid. USBDHandle atau Urb adalah NULL.
STATUS_INSUFFICIENT_RESOURCES
Tidak tersedia cukup memori untuk menyelesaikan permintaan.

Keterangan

Sebelum memanggil USBD_SelectConfigUrbAllocateAndBuild, driver klien harus melakukan tugas berikut:

  1. Dapatkan jumlah antarmuka dalam konfigurasi. Informasi ini terkandung dalam anggota bNumInterfaces dari struktur USB_CONFIGURATION_DESCRIPTOR yang diacu oleh ConfigurationDescriptor.
  2. Buat array struktur USBD_INTERFACE_LIST_ENTRY . Jumlah elemen dalam array harus satu lebih dari jumlah antarmuka. Inisialisasi array dengan memanggil RtlZeroMemory.
  3. Dapatkan deskriptor antarmuka untuk setiap antarmuka (atau pengaturan alternatifnya) dalam konfigurasi. Anda dapat memperoleh deskriptor antarmuka tersebut dengan memanggil USBD_ParseConfigurationDescriptorEx.
  4. 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.
  5. Anggota InterfaceDescriptor dari elemen terakhir harus diatur ke NULL.
USBD_SelectConfigUrbAllocateAndBuild melakukan tugas-tugas berikut:
  • 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.
Anda dapat menggunakan pointer yang diterima ke struktur URB untuk mengirimkan permintaan konfigurasi tertentu ke tumpukan driver USB untuk mengatur konfigurasi yang ditentukan. Selain itu, Anda dapat menggunakan anggota Antarmuka dari setiap struktur USBD_INTERFACE_INFORMATION dalam array untuk mendapatkan informasi tentang antarmuka. Dalam setiap struktur USBD_INTERFACE_INFORMATION , anggota Pipes adalah array struktur USBD_PIPE_INFORMATION . Setiap struktur USBD_PIPE_INFORMATION berisi informasi tentang pipa yang dibuka (oleh tumpukan driver USB) untuk titik akhir di antarmuka tersebut. Anda dapat memperoleh handel pipa dari array dan menyimpannya untuk permintaan I/O di masa mendatang ke perangkat.

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

USBD_CreateConfigurationRequestEx

USBD_CreateHandle