RequestCompleted 規則 (kmdf)
RequestCompleted 規則會指定針對非篩選驅動程式,必須完成提供給驅動程序預設 I/O 佇列的每個要求,除非延遲或轉送要求,或呼叫 WdfRequestStopAcknowledge。
必須完成透過其中一個佇列回呼函式向驅動程式的預設佇列呈現的 I/O 要求要求,才能從 I/O 要求回呼函式結束,但下列情況除外:
要求已延遲 (至 DPC 或工作專案,例如) 。 在此情況下,您可以使用 DeferredRequestCompleted 規則。
要求已轉送至 I/O 目標或另一個佇列
要求已藉由呼叫 WdfDeviceEnqueueRequest) 傳遞至架構 (
當驅動程式從下列回呼函式結束時,會驗證此規則:
EvtFileClose、 EvtFileCleanup、 EvtDeviceSelfManagedIoSuspend、 EvtDeviceSelfManagedIoFlush、 EvtDeviceSelfManagedIoCleanup、 EvtDeviceShutdownNotification、 EvtDeviceSurpriseRemoval、 EvtCleanupCallback 或 EvtDestroyCallback for the device
要求呈現的 I/O 佇列回呼函式為 EvtIoDefault、 EvtIoRead、 EvtIoWrite、 EvtIoDeviceControl 和 EvtIoInternalDeviceControl
驅動程式模型:KMDF
測試方法
在編譯時期 |
---|
執行 靜態驅動程式驗證器 ,並指定 RequestCompleted 規則。 使用下列步驟來執行程式碼的分析:如需詳細資訊,請參閱 使用靜態驅動程式驗證器在驅動程式中尋找瑕疵。 |
適用於
WdfDeviceEnqueueRequestWdfDmaTransactionInitializeWdfDmaTransactionInitializeUsingRequestWdfIoTargetSendInternalIoctlOthersSynchronouslyWdfIoTargetSendInternalIoctlSynchronouslyWdfIoTargetSendIoctlSynchronouslyWdfIoTargetSendReadSynchronouslyWdfIoTargetSendWriteSynchronouslyWdfRequestCompleteWdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoostWdfRequestForwardToIoQueueWdfRequestMarkCancelableWdfRequestMarkCancelableExWdfRequestSendWdfRequestStopAcknowledgeWdfWorkItemEnqueue