struktur _URB_BULK_OR_INTERRUPT_TRANSFER (usb.h)

Struktur _URB_BULK_OR_INTERRUPT_TRANSFER digunakan oleh driver klien USB untuk mengirim atau menerima data pada pipa massal atau pada pipa interupsi.

Sintaks

struct _URB_BULK_OR_INTERRUPT_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;
};

Anggota

Hdr

Penunjuk ke struktur _URB_HEADER yang menentukan informasi header URB. Hdr.Function harus URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER, dan Hdr.Length harus diatur ke sizeof(_URB_BULK_OR_INTERRUPT_TRANSFER).

PipeHandle

Menentukan handel buram ke pipa massal atau interupsi. 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 wMaxPacketSize dari struktur USB_ENDPOINT_DESCRIPTOR (deskriptor titik akhir). Ketika pengontrol host menerima paket yang lebih pendek dari wMaxPacketSize pada titik akhir massal atau interupsi, pengontrol host segera berhenti meminta data dari titik akhir dan menyelesaikan transfer. Jika bendera USBD_SHORT_TRANSFER_OK tidak diatur, pengontrol host menyelesaikan transfer dengan kesalahan.

Bendera ini tidak boleh diatur kecuali USBD_TRANSFER_DIRECTION_IN juga diatur. Catatan Pada pengontrol host EHCI, USBD_SHORT_TRANSFER_OK diabaikan untuk titik akhir massal dan interupsi. Transfer paket pendek pada pengontrol EHCI tidak mengakibatkan kondisi kesalahan.

Pada pengontrol host UHCI dan OHCI, jika USBD_SHORT_TRANSFER_OK tidak diatur untuk transfer massal atau interupsi, transfer paket singkat menghentikan titik akhir dan kode kesalahan dikembalikan untuk transfer. Driver klien harus melanjutkan titik akhir dengan mengirimkan permintaan URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL sebelum mengirimkan permintaan transfer ke titik akhir.

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.

Keterangan

Driver dapat menggunakan rutinitas layanan UsbBuildInterruptOrBulkTransferRequest untuk memformat URB ini. Buffer yang ditentukan dalam TransferBuffer atau dijelaskan dalam TransferBufferMDL harus tidak dapat dihapus.

Dalam URB, parameter TransferBuffer dan TransferBufferMDL dapat berupa nilai non-NULL, pada saat yang sama. Dalam hal ini, buffer transfer dan MDL yang menunjuk ke TransferBuffer dan TransferBufferMDL harus menunjuk ke buffer yang sama.

Driver bus USB memproses URB ini saat DISPATCH_LEVEL.

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

Struktur USB

_URB_HEADER