EVT_WDFDEVICE_WDM_IRP_DISPATCH fungsi panggilan balik (wdfdevice.h)

[Berlaku untuk KMDF dan UMDF]

Fungsi panggilan balik peristiwa EvtDeviceWdmIrpDispatch driver menerima IRP sebelum kerangka kerja memproses IRP.

Sintaks

EVT_WDFDEVICE_WDM_IRP_DISPATCH EvtWdfdeviceWdmIrpDispatch;

NTSTATUS EvtWdfdeviceWdmIrpDispatch(
  [in]      WDFDEVICE Device,
  [in]      UCHAR MajorFunction,
  [in]      UCHAR MinorFunction,
  [in]      ULONG Code,
  [in]      WDFCONTEXT DriverContext,
  [in, out] PIRP Irp,
  [in]      WDFCONTEXT DispatchContext
)
{...}

Parameter

[in] Device

Handel ke objek perangkat kerangka kerja.

[in] MajorFunction

Salah satu kode fungsi utama IRP yang didefinisikan dalam wdm.h.

[in] MinorFunction

Salah satu kode fungsi minor I/O IRP yang didefinisikan dalam wdm.h untuk kode MajorFunction .

[in] Code

Menentukan nilai kode kontrol I/O. Parameter ini hanya valid jika MajorFunction diatur ke IRP_MJ_DEVICE_CONTROL.

[in] DriverContext

Penunjuk yang tidak ditik ke informasi konteks yang ditentukan driver yang disediakan driver ketika disebut WdfDeviceConfigureWdmIrpDispatchCallback.

[in, out] Irp

Penunjuk ke struktur IRP.

[in] DispatchContext

Penunjuk yang tidak dijelajahi ke informasi konteks pengiriman kerangka kerja. Driver harus menyediakan parameter ini ketika memanggil WdfDeviceWdmDispatchIrp.

Nilai kembali

Fungsi panggilan balik EvtDeviceWdmIrpDispatch harus:

  • Mengembalikan nilai yang dikembalikan metode WdfDeviceWdmDispatchIrp , jika fungsi panggilan balik memanggil metode tersebut.
  • Mengembalikan nilai yang dikembalikan metode WdfDeviceWdmDispatchIrpToIoQueue , jika fungsi panggilan balik memanggil metode tersebut.
  • KmDF saja

    Atur anggota IoStatus.Status dari IRP ke STATUS_SUCCESS atau nilai status lain yang NT_SUCCESS(status) sama dengan TRUE, dan kembalikan nilai yang sama (setelah memanggil IoCompleteRequest) jika fungsi panggilan balik berhasil menyelesaikan IRP yang diterima.
  • KmDF saja

    Atur anggota IoStatus.Status dari IRP ke nilai status yang NT_SUCCESS(status) sama dengan FALSE, dan kembalikan nilai yang sama (setelah memanggil IoCompleteRequest) jika fungsi panggilan balik mendeteksi kesalahan.
  • KmDF saja

    Kembalikan STATUS_PENDING jika fungsi panggilan balik memanggil IoMarkIrpPending.

Keterangan

Fungsi panggilan balik EvtDeviceWdmIrpDispatch hanya boleh digunakan untuk memilih antrean tertentu untuk IRP. Untuk melakukannya, driver memanggil metode WdfDeviceWdmDispatchIrpToIoQueue dari dalam fungsi panggilan balik.

Jika, setelah memeriksa IRP dalam fungsi panggilan balik ini, driver tidak tahu cara mengirim IRP, driver dapat memanggil WdfDeviceWdmDispatchIrp untuk mengembalikan IRP ke kerangka kerja untuk penanganan default.

Driver UMDF harus memanggil WdfDeviceWdmDispatchIrp atau WdfDeviceWdmDispatchIrpToIoQueue dari fungsi panggilan balik ini. Driver KMDF memiliki opsi tambahan untuk memanggil keduanya, dan sebaliknya menyelesaikan IRP atau menandainya tertunda.

Untuk mendaftarkan fungsi panggilan balik EvtDeviceWdmIrpDispatch , driver Anda harus memanggil WdfDeviceConfigureWdmIrpDispatchCallback.

Dalam fungsi panggilan balik EvtDeviceWdmIrpDispatch , driver tidak boleh mengatur rutinitas penyelesaian. Jika rutinitas penyelesaian diperlukan, driver KMDF dapat menyediakan fungsi panggilan balik EvtDeviceWdmIrpPreprocess alih-alih EvtDeviceWdmIrpDispatch.

Untuk informasi selengkapnya tentang menentukan antrean runtime integrasi saat runtime integrasi tiba, lihat Mengirimkan IRP ke Antrean I/O.

Persyaratan

Persyaratan Nilai
Target Platform Universal
Versi KMDF minimum 1.11
Versi UMDF minimum 2.17
Header wdfdevice.h (termasuk Wdf.h)
IRQL <=DISPATCH_LEVEL

Lihat juga

WdfDeviceConfigureWdmIrpDispatchCallback

WdfDeviceWdmDispatchIrp

WdfDeviceWdmDispatchIrpToIoQueue