Aturan RequestCompleted (kmdf)
Aturan RequestCompleted menentukan bahwa untuk driver non-filter setiap permintaan yang disajikan ke antrean I/O default driver harus diselesaikan, kecuali permintaan ditangguhkan atau diteruskan, atau jika WdfRequestStopAcknowledge dipanggil.
Permintaan I/O yang disajikan ke antrean default driver melalui salah satu fungsi panggilan balik antrean harus diselesaikan sebelum keluar dari fungsi panggilan balik permintaan I/O, kecuali dalam kasus berikut:
Permintaan ditangguhkan (ke DPC atau item kerja, misalnya). Dalam hal ini, Anda dapat menggunakan aturan DeferredRequestCompleted .
Permintaan diteruskan ke target I/O atau ke antrean lain
Permintaan dikirimkan ke kerangka kerja (dengan memanggil WdfDeviceEnqueueRequest)
WdfRequestStopAcknowledge dipanggil
Aturan diverifikasi ketika driver keluar dari fungsi panggilan balik berikut:
EvtIoStop, EvtCleanupCallback , atau EvtDestroyCallback untuk antrean
EvtCleanupCallback atau EvtDestroyCallback untuk objek file
EvtFileClose, EvtFileCleanup, EvtDeviceSelfManagedIoSuspend, EvtDeviceSelfManagedIoFlush, EvtDeviceSelfManagedIoCleanup, EvtDeviceShutdownNotification, EvtDeviceSurpriseRemoval, EvtCleanupCallback atau EvtDestroyCallback untuk perangkat
Fungsi panggilan balik antrean I/O untuk presentasi permintaan adalah EvtIoDefault, EvtIoRead, EvtIoWrite, EvtIoDeviceControl, dan EvtIoInternalDeviceControl
Model driver: KMDF
Cara menguji
Pada waktu kompilasi |
---|
Jalankan Pemverifikasi Driver Statis dan tentukan aturan RequestCompleted . Gunakan langkah-langkah berikut untuk menjalankan analisis kode Anda:
Untuk informasi selengkapnya, lihat Menggunakan Pemverifikasi Driver Statis untuk Menemukan Cacat pada Driver. |
Berlaku untuk
WdfDeviceEnqueueRequestWdfDmaTransactionInitializeWdfDmaTransactionInitializeUsingRequestWdfIoTargetSendInternalIoctlOthersSynchronouslyWdfIoTargetSendInternalIoctlSy Secara sinkronWdfIoTargetSendIoctlSynchronouslyWdfIoTargetSendReadSynchronouslyWdfIoTargetSendWriteSynchronouslyWdfRequestCompleteWdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoostWdfRequestForwardToIoQueueWdfRequestMarkCancelableWdfRequestMarkCancelableExWdfRequestSendWdfRequestStopAcknowledgeWdfWorkItemEnqueue