DeferredRequestCompleted 규칙(kmdf)
DeferredRequestCompleted 규칙은 드라이버의 기본 I/O 큐에 제공된 I/O 요청이 콜백 함수에서 완료되지 않고 이후 처리를 위해 지연되는 경우 요청이 프레임워크에 전달되고 전달되지 않는 한, 또는 WdfRequestStopAcknowledge 메서드가 호출되지 않는 한 지연 처리 콜백 함수에서 요청을 완료해야 한다고 지정합니다.
DeferredRequestCompleted 규칙을 사용하려면 __sdv_save_request 및 __sdv_retrieve_request매크로를 사용하여 지연된 요청을 식별해야 합니다. 이러한 매크로를 사용하는 방법에 대한 자세한 내용은 지연 프로시저 호출에 __sdv_save_request 및 __sdv_retrieve_request 사용을 참조하세요. 사전 조건 규칙 AliasWithinTimerDpc 는 이러한 매크로가 있는지 확인합니다.
큐 콜백 함수 중 하나를 통해 드라이버의 기본 큐에 제공되고 지연된 요청은 다음 경우를 제외하고 I/O 요청 콜백 함수에서 종료되기 전에 완료되어야 합니다.
I/O 요청이 I/O 대상 또는 다른 큐로 전달되었습니다.
I/O 요청이 프레임워크에 전달되었습니다( WdfDeviceEnqueueRequest 호출).
WdfRequestStopAcknowledge 메서드가 호출되었습니다.
규칙은 드라이버가 다음 콜백 함수에서 종료될 때 확인됩니다.
큐에 대한 EvtIoStop, EvtCleanupCallback 또는 EvtDestroyCallback
파일 개체에 대한 EvtCleanupCallback 또는 EvtDestroyCallback
EvtFileClose, EvtFileCleanup, EvtDeviceSelfManagedIoSuspend, EvtDeviceSelfManagedIoFlush, EvtDeviceSelfManagedIoCleanup, EvtDeviceShutdownNotification, EvtDeviceSurpriseRemoval, EvtCleanupCallback 또는 EvtDestroyCallback
EvtDriverUnload
I/O 요청 프레젠테이션에 대한 I/O 큐 콜백 함수는 EvtIoDefault, EvtIoRead, EvtIoWrite, EvtIoDeviceControl 및 EvtIoInternalDeviceControl입니다.
I/O 요청에 대한 지연 처리 콜백 함수는 EvtTimerFunc, EvtDpcFunc, EvtInterruptDpc, EvtInterruptEnable, EvtInterruptDisable 및 EvtWorkItem입니다.
DeferredRequestCompleted 규칙은 WdfRequestMarkCancelable, WdfDmaTransactionInitializeUsingRequest, WdfDmaTransactionInitialize 또는 WdfWorkItemEnqueue 메서드에 대한 호출을 사용하여 I/O 요청이 지연되고 있음을 나타냅니다.
드라이버 모델: KMDF
테스트 방법
컴파일 시 |
---|
정적 드라이버 검증 도구를 실행하고 DeferredRequestCompleted 규칙을 지정합니다. 다음 단계를 사용하여 코드 분석을 실행합니다. |
적용 대상
WdfDeviceEnqueueRequestWdfDmaTransactionInitializeWdfDmaTransactionInitializeUsingRequestWdfIoTargetSendInternalIoctlOthersSynchronouslyWdfIoTargetSendInternalIoctlWdfIoTargetSendIoctlSynchronousouslyWdfIoTargetSendReadSynchronouslyWdfIoTargetSendWriteSynchronouslyWdfRequestCompleteWdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoostWdfRequestForwardToIoQueueWdfRequestMarkCancelableWdfRequestMarkCancelableExWdfRequestSendWdfRequestStopAcknowledgeWdfRequestUnmarkCancelableWdfWorkItemEnqueue