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
USBD_TRANSFER_DIRECTION_IN
Diatur untuk meminta data dari perangkat. Untuk mentransfer data ke perangkat, bendera ini harus jelas.
USBD_TRANSFER_DIRECTION_OUT
Diatur untuk mentransfer data ke perangkat. Mengatur bendera ini setara dengan menghapus bendera USBD_TRANSFER_DIRECTION_IN.
USBD_SHORT_TRANSFER_OK
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:

  • Pada pengontrol host EHCI, pengontrol host segera melanjutkan ke fase status transfer kontrol. Transfer berhasil diselesaikan, terlepas dari apakah USBD_SHORT_TRANSFER_OK diatur.
  • Pada pengontrol host UHCI dan OHCI, jika USBD_SHORT_TRANSFER_OK diatur, pengontrol host melanjutkan ke fase status. Jika USBD_SHORT_TRANSFER_OK tidak diatur, pengontrol host meninggalkan fase data dan status transfer kontrol dan transfer selesai dengan kesalahan.
USBD_DEFAULT_PIPE_TRANSFER
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

URB

URB_CONTROL_TRANSFER_EX

Struktur USB

_URB_HEADER