EVT_WDF_IO_QUEUE_IO_DEVICE_CONTROL fungsi panggilan balik (wdfio.h)
[Berlaku untuk KMDF dan UMDF]
Fungsi panggilan balik peristiwa EvtIoDeviceControl driver memproses permintaan kontrol I/O perangkat tertentu.
Sintaks
EVT_WDF_IO_QUEUE_IO_DEVICE_CONTROL EvtWdfIoQueueIoDeviceControl;
void EvtWdfIoQueueIoDeviceControl(
[in] WDFQUEUE Queue,
[in] WDFREQUEST Request,
[in] size_t OutputBufferLength,
[in] size_t InputBufferLength,
[in] ULONG IoControlCode
)
{...}
Parameter
[in] Queue
Handel ke objek antrean kerangka kerja yang terkait dengan permintaan I/O.
[in] Request
Handel ke objek permintaan kerangka kerja.
[in] OutputBufferLength
Panjang, dalam byte, dari buffer output permintaan, jika buffer output tersedia.
[in] InputBufferLength
Panjang, dalam byte, dari buffer input permintaan, jika buffer input tersedia.
[in] IoControlCode
Kode kontrol I/O yang ditentukan driver atau yang ditentukan sistem (IOCTL) yang terkait dengan permintaan.
Nilai kembali
Tidak ada
Keterangan
Driver mendaftarkan fungsi panggilan balik EvtIoDeviceControl saat memanggil WdfIoQueueCreate. Untuk informasi selengkapnya tentang memanggil WdfIoQueueCreate, lihat Membuat Antrean I/O.
Jika driver telah mendaftarkan fungsi panggilan balik EvtIoDeviceControl untuk antrean I/O perangkat, fungsi panggilan balik menerima setiap permintaan kontrol I/O (IRP_MJ_DEVICE_CONTROL) dari antrean. Untuk informasi selengkapnya, lihat Penangan Permintaan.
Fungsi panggilan balik EvtIoDeviceControl harus memproses setiap permintaan I/O yang diterima dengan cara tertentu. Untuk informasi selengkapnya, lihat Memproses Permintaan I/O.
Driver menerima permintaan kontrol I/O ketika aplikasi pengguna memanggil DeviceIoControl (dijelaskan dalam dokumentasi Microsoft Windows SDK) atau ketika driver lain membuat permintaan dengan memanggil WdfIoTargetSendIoctlSynchronously atau WdfIoTargetFormatRequestForIoctl.
Jenis operasi yang akan dilakukan tergantung pada nilai parameter IoControlCode . Anda harus menentukan kumpulan nilai IoControlCode yang dapat dikirim aplikasi dan driver lain ke driver Anda. Untuk informasi selengkapnya tentang IOCTL, lihat Menggunakan Kode Kontrol I/O.
Sebagian besar operasi kontrol I/O perangkat memerlukan buffer input, buffer output, atau keduanya. Untuk informasi tentang bagaimana driver dapat mengakses buffer permintaan, lihat Mengakses Buffer Data di driver Framework-Based.
Teknik yang dapat digunakan driver Anda untuk mengakses buffer input dan output permintaan (jika ada) bergantung pada bidang TransferType dari IOCTL. Nilai bidang TransferType IOCTL dapat METHOD_BUFFERED, METHOD_DIRECT_IN, METHOD_DIRECT_OUT, atau METHOD_NEITHER. Untuk informasi selengkapnya tentang bidang TransferType , lihat Menentukan Kode Kontrol I/O.
Fungsi panggilan balik EvtIoDeviceControl dapat dipanggil di IRQL <= DISPATCH_LEVEL, kecuali anggota ExecutionLevel dari struktur WDF_OBJECT_ATTRIBUTES perangkat atau driver diatur ke WdfExecutionLevelPassive.
Jika IRQL PASSIVE_LEVEL, kerangka kerja memanggil fungsi panggilan balik dalam wilayah penting.
Untuk informasi selengkapnya tentang tingkat IRQL untuk penangan permintaan, lihat Menggunakan Sinkronisasi Otomatis.
Fungsi panggilan balik EvtIoDeviceControl driver tidak boleh memanggil metode objek antrean berikut:
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Versi KMDF minimum | 1,0 |
Versi UMDF minimum | 2.0 |
Header | wdfio.h (termasuk Wdf.h) |
IRQL | <= DISPATCH_LEVEL (lihat bagian Keterangan) |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk