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
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) |