struktur _URB_CONTROL_VENDOR_OR_CLASS_REQUEST (usb.h)

Struktur _URB_CONTROL_VENDOR_OR_CLASS_REQUEST digunakan oleh driver klien USB untuk mengeluarkan perintah khusus vendor atau kelas ke perangkat, antarmuka, titik akhir, atau target lain yang ditentukan perangkat.

Sintaks

struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST {
  struct _URB_HEADER   Hdr;
  PVOID                Reserved;
  ULONG                TransferFlags;
  ULONG                TransferBufferLength;
  PVOID                TransferBuffer;
  PMDL                 TransferBufferMDL;
  struct _URB          *UrbLink;
  struct _URB_HCD_AREA hca;
  UCHAR                RequestTypeReservedBits;
  UCHAR                Request;
  USHORT               Value;
  USHORT               Index;
  USHORT               Reserved1;
};

Anggota

Hdr

Penunjuk ke struktur _URB_HEADER yang menentukan informasi header URB. Hdr.Function harus salah satu dari URB_FUNCTION_CLASS_XXX atau URB_FUNCTION_VENDOR_XXX GET_STATUS, dan Hdr.Length harus sizeof(_URB_CONTROL_VENDOR_OR_CLASS_REQUEST).

Reserved

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. Bendera harus diatur jika pipa adalah pipa transfer interupsi.
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 (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.

Bendera ini tidak boleh diatur kecuali USBD_TRANSFER_DIRECTION_IN juga diatur.

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

Pointer 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

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.

UrbLink

Dicadangkan. Jangan gunakan.

hca

Dicadangkan. Jangan gunakan.

RequestTypeReservedBits

Dicadangkan. Jangan gunakan.

Request

Menentukan kode permintaan USB atau yang ditentukan vendor untuk perangkat, antarmuka, titik akhir, atau target lain yang ditentukan perangkat.

Value

Menentukan nilai, khusus untuk Permintaan, yang menjadi bagian dari paket penyiapan yang ditentukan USB untuk target. Nilai ini ditentukan oleh pembuat kode yang digunakan dalam Permintaan.

Index

Menentukan indeks yang ditentukan perangkat, dikembalikan oleh permintaan konfigurasi yang berhasil, jika permintaannya adalah untuk titik akhir atau antarmuka. Jika tidak, Indeks harus nol.

Reserved1

Dicadangkan. Jangan gunakan.

Keterangan

Driver dapat menggunakan format rutin layanan UsbBuildVendorRequest URB ini.

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

Persyaratan

Persyaratan Nilai
Header usb.h (termasuk Usb.h)

Lihat juga

URB

Struktur USB

_URB_HEADER