struktur _URB_CONTROL_TRANSFER_EX (usb.h)

Struktur _URB_CONTROL_TRANSFER_EX digunakan oleh driver klien USB untuk mentransfer data ke atau dari pipa kontrol, dengan batas waktu yang membatasi waktu transfer yang dapat diterima.

Sintaks

struct _URB_CONTROL_TRANSFER_EX {
  struct _URB_HEADER   Hdr;
  USBD_PIPE_HANDLE     PipeHandle;
  ULONG                TransferFlags;
  ULONG                TransferBufferLength;
  PVOID                TransferBuffer;
  PMDL                 TransferBufferMDL;
  ULONG                Timeout;
  ULONG                Pad;
  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_EX, dan Hdr.Length harus sizeof(_URB_CONTROL_TRANSFER_EX).

PipeHandle

Tangani untuk pipa.

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 di anggota bMaxPacketSize0 dari struktur USB_DEVICE_DESCRIPTOR (pendeskripsi 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

Penunjuk ke buffer penduduk 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

Penunjuk ke MDL yang menjelaskan buffer penduduk 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 dipagasi.

Timeout

Menunjukkan waktu, dalam milidetik, sebelum waktu URB habis. Nilai 0 menunjukkan bahwa tidak ada batas waktu untuk URB ini.

Pad

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 ini identik dengan _URB_CONTROL_TRANSFER, kecuali bahwa anggota Timeout menetapkan batas waktu untuk URB.

Anggota yang dicadangkan dari struktur ini harus diperlakukan sebagai buram dan disediakan untuk penggunaan sistem.

Persyaratan

   
Klien minimum yang didukung Tersedia di Windows Vista dan sistem operasi yang lebih baru.
Header usb.h (termasuk Usb.h)

Lihat juga

URB

Struktur USB

_URB_CONTROL_TRANSFER

_URB_HEADER