EVT_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL fungsi panggilan balik (wdfio.h)

[Berlaku untuk KMDF dan UMDF]

Fungsi panggilan balik peristiwa EvtIoInternalDeviceControl driver memproses permintaan I/O yang berisi kode kontrol I/O perangkat internal (IOCTL).

Sintaks

EVT_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL EvtWdfIoQueueIoInternalDeviceControl;

void EvtWdfIoQueueIoInternalDeviceControl(
  [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

Panjangnya, dalam byte, dari buffer output permintaan, jika buffer output tersedia.

[in] InputBufferLength

Panjangnya, dalam byte, dari buffer input permintaan, jika buffer input tersedia.

[in] IoControlCode

IOCTL yang ditentukan driver atau yang ditentukan sistem yang terkait dengan permintaan.

Nilai kembali

Tidak ada

Keterangan

Driver mendaftarkan fungsi panggilan balik EvtIoInternalDeviceControl saat memanggil metode WdfIoQueueCreate . Untuk informasi selengkapnya tentang memanggil WdfIoQueueCreate, lihat Membuat Antrean I/O.

Jika driver telah mendaftarkan fungsi panggilan balik EvtIoInternalDeviceControl untuk antrean I/O perangkat, fungsi panggilan balik menerima setiap permintaan kontrol I/O internal (IRP_MJ_INTERNAL_DEVICE_CONTROL) dari antrean. Untuk informasi selengkapnya, lihat Penangan Permintaan.

Fungsi panggilan balik EvtIoInternalDeviceControl 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 internal ketika driver lain membuat permintaan dengan memanggil WdfIoTargetSendInternalIoctlSynchronously atau WdfIoTargetFormatRequestForInternalIoctl.

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 internal 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 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 EvtIoInternalDeviceControl dapat dipanggil di IRQL <= DISPATCH_LEVEL, kecuali anggota ExecutionLevel dari perangkat atau struktur WDF_OBJECT_ATTRIBUTES driver diatur ke WdfExecutionLevelPassive. (Jika driver Anda berada di bagian atas tumpukan drivernya, fungsi panggilan balik dipanggil di IRQL = PASSIVE_LEVEL.)

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 EvtIoInternalDeviceControl driver tidak boleh memanggil metode objek antrean berikut:

WdfIoQueueDrainSynchronously
WdfIoQueuePurgeSynchronously
WdfIoQueueStopSynchronously

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

EvtIoDeviceControl

WDF_OBJECT_ATTRIBUTES

WdfIoQueueCreate

WdfIoTargetFormatRequestForInternalIoctl

WdfIoTargetSendInternalIoctlSynchronously