struktur _URB_CONTROL_TRANSFER (usb.h)
Struktur _URB_CONTROL_TRANSFER digunakan oleh driver klien USB untuk mentransfer data ke atau dari pipa kontrol.
Sintaks
struct _URB_CONTROL_TRANSFER {
struct _URB_HEADER Hdr;
USBD_PIPE_HANDLE PipeHandle;
ULONG TransferFlags;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
UCHAR SetupPacket[8];
};
Anggota
Hdr
Penunjuk ke struktur _URB_HEADER yang menentukan informasi header URB. Hdr.Function harus URB_FUNCTION_CONTROL_TRANSFER, dan Hdr.Length harus sizeof(_URB_CONTROL_TRANSFER)
.
PipeHandle
Tangani untuk pipa kontrol.
Jika target adalah titik akhir kontrol default, maka PipeHandle harus NULL. Dalam hal ini, TransferFlags harus berisi bendera USBD_DEFAULT_PIPE_TRANSFER.
Jika target adalah titik akhir kontrol non-default, PipeHandle menentukan handel buram untuk pipa kontrol. Driver pengontrol host mengembalikan handel ini ketika driver klien memilih konfigurasi perangkat dengan URB jenis URB_FUNCTION_SELECT_CONFIGURATION atau ketika driver klien mengubah pengaturan untuk antarmuka dengan URB jenis URB_FUNCTION_SELECT_INTERFACE.
TransferFlags
Menentukan nol, satu, atau kombinasi bendera berikut:
Nilai | Makna |
---|---|
|
Diatur untuk meminta data dari perangkat. Untuk mentransfer data ke perangkat, bendera ini harus jelas. |
|
Diatur untuk mentransfer data ke perangkat. Mengatur bendera ini setara dengan menghapus bendera USBD_TRANSFER_DIRECTION_IN. |
|
Diatur untuk mengarahkan pengontrol host untuk tidak mengembalikan kesalahan ketika menerima paket dari perangkat yang lebih pendek dari ukuran paket maksimum untuk titik akhir. Ukuran paket maksimum untuk titik akhir dilaporkan dalam anggota bMaxPacketSize0 dari struktur USB_DEVICE_DESCRIPTOR (deskriptor perangkat) untuk titik akhir kontrol default. Untuk titik akhir kontrol non-default, ukuran paket maksimum diatur dalam anggota wMaxPacketSize dari struktur USB_ENDPOINT_DESCRIPTOR (deskriptor titik akhir).
Ketika pengontrol host menerima paket yang panjangnya lebih pendek dari nilai wMaxPacketSize pada titik akhir kontrol, perilakunya adalah sebagai berikut tergantung pada jenis pengontrol host:
|
|
Diatur untuk mengarahkan pengontrol host untuk melakukan transfer kontrol pada pipa kontrol default. Ini memungkinkan pemanggil untuk mengirim perintah ke pipa kontrol default tanpa secara eksplisit menentukan handel pipa. |
TransferBufferLength
Menentukan panjang, dalam byte, dari buffer yang ditentukan dalam TransferBuffer atau dijelaskan dalam TransferBufferMDL. Driver pengontrol host mengembalikan jumlah byte yang dikirim ke atau dibaca dari pipa di anggota ini.
TransferBuffer
Arahkan ke buffer residen untuk transfer atau NULL jika MDL disediakan di TransferBufferMDL. Isi buffer ini tergantung pada nilai TransferFlags. Jika USBD_TRANSFER_DIRECTION_IN ditentukan, buffer ini akan berisi data yang dibaca dari perangkat saat kembali dari driver pengontrol host. Jika tidak, buffer ini berisi data yang disediakan driver untuk ditransfer ke perangkat.
TransferBufferMDL
Pointer ke MDL yang menjelaskan buffer residen atau NULL jika buffer disediakan di TransferBuffer. Isi buffer tergantung pada nilai TransferFlags. Jika USBD_TRANSFER_DIRECTION_IN ditentukan, buffer yang dijelaskan akan berisi data yang dibaca dari perangkat saat kembali dari driver pengontrol host. Jika tidak, buffer berisi data yang disediakan driver untuk ditransfer ke perangkat. MDL ini harus dialokasikan dari kumpulan yang tidak disebarkan.
UrbLink
Dicadangkan. Jangan gunakan.
hca
Dicadangkan. Jangan gunakan.
SetupPacket[8]
Menentukan paket penyiapan permintaan yang ditentukan USB. Format paket penyiapan permintaan USB ditemukan dalam spesifikasi inti USB.
Keterangan
Struktur URB_CONTROL_TRANSFER_EX identik dengan URB_CONTROL_TRANSFER, kecuali bahwa struktur tersebut memberikan nilai batas waktu di bidang Batas Waktu .
Anggota yang dicadangkan dari struktur ini harus diperlakukan buram dan dicadangkan untuk penggunaan sistem.
Persyaratan
Persyaratan | Nilai |
---|---|
Header | usb.h (termasuk Usb.h) |
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