Bagikan melalui


IOCTL_SEND_USB_REQUEST IOCTL (usbscan.h)

Mengirim permintaan yang ditentukan vendor ke perangkat USB, menggunakan pipa kontrol, dan secara opsional mengirim atau menerima data tambahan.

Kode utama

IRP_MJ_DEVICE_CONTROL

Buffer input

Penunjuk ke struktur IO_BLOCK_EX .

Panjang buffer input

Ukuran buffer input.

Buffer output

Arahkan ke buffer yang sama dengan anggota pbyData dari struktur IO_BLOCK_EX yang diidentifikasi, atau NULL jika transfer data tidak diminta.

Panjang buffer output

Ukuran buffer output, atau nol jika transfer data tidak diminta.

Blok status

Irp->IoStatus.Status diatur ke STATUS_SUCCESS jika permintaan berhasil. Jika tidak, Status ke kondisi kesalahan yang sesuai sebagai kode NTSTATUS .

Keterangan

Parameter DeviceIoControl

Ketika fungsi DeviceloControl dipanggil dengan kode kontrol IOCTL_SEND_USB_REQUEST, pemanggil harus menentukan alamat struktur IO_BLOCK_EX sebagai parameter lpInBuffer fungsi. Jenis permintaan yang ditentukan dengan kode kontrol I/O ini khusus perangkat dan ditentukan vendor, seperti halnya jenis dan ukuran informasi apa pun yang mungkin dikirim atau diterima.

Tabel berikut ini memperlihatkan bagaimana argumen input harus ditentukan.

Argumen Operasi Baca Operasi Tulis Tidak Ada Transfer Data
lpInBuffer IO_BLOCK_EX penunjuk. IO_BLOCK_EX penunjuk. IO_BLOCK_EX penunjuk.
lpOutBuffer Pointer ke buffer yang akan menerima data untuk dibaca. Penunjuk ke buffer yang berisi data yang akan ditulis. NULL
lpOutBufferSize Ukuran buffer. Ukuran buffer. Nol
bRequest anggota struktur IO_BLOCK_EX Kode permintaan khusus perangkat. Kode permintaan khusus perangkat. Kode permintaan khusus perangkat.
anggota pbyData dari struktur IO_BLOCK_EX Penunjuk yang sama dengan lpOutBuffer. Penunjuk yang sama dengan lpOutBuffer. NULL
Anggota struktur IO_BLOCK_EX uLength Nilai yang sama dengan lpOutBufferSize. Nilai yang sama dengan lpOutBufferSize. Nol
fTransferDirectionIn anggota struktur IO_BLOCK_EX TRUE FALSE FALSE

Anggota bmRequestType dari struktur IO_BLOCK_EX tidak digunakan dengan IOCTL_SEND_USB_REQUEST.

Dengan menggunakan konten struktur IO_BLOCK_EX , driver mode kernel membuat URB yang berisi struktur URB_CONTROL_VENDOR_OR_CLASS_REQUEST .

Tabel berikut menunjukkan nilai yang ditetapkan untuk _URB_CONTROL_VENDOR_OR_CLASS_REQUEST anggota struktur.

Anggota Struktur Nilai yang Ditetapkan
TransferFlags 0
TransferBufferLength pIoBlockEx-uLength>
TransferBuffer lpOutBuffer (baca) atau pIoBlockEx-pbyData> (tulis)
TransferBufferMDL NULL
RequestTypeReservedBits 0xC0 (baca) atau 0x40 (tulis)
Permintaan pIoBlockEx-bRequest>
Nilai (PENDEK) pIoBlockEx-uOffset>
Indeks pIoBlockEx-uIndex>

Untuk informasi selengkapnya, lihat Mengakses Driver Kernel-Mode untuk Perangkat Gambar Diam.

Persyaratan

Persyaratan Nilai
Header usbscan.h (termasuk Usbscan.h)