Regra RequestCompleted (kmdf)
A regra RequestCompleted especifica que, para um driver sem filtro, cada solicitação apresentada à fila de E/S padrão do driver deve ser concluída, a menos que a solicitação seja adiada ou encaminhada ou se WdfRequestStopAcknowledge for chamado.
Uma solicitação de E/S apresentada à fila padrão do driver por meio de uma das funções de retorno de chamada de fila deve ser concluída antes de sair das funções de retorno de chamada de solicitação de E/S, exceto nos seguintes casos:
A solicitação foi adiada (para um DPC ou item de trabalho, por exemplo). Nesse caso, você pode usar a regra DeferredRequestCompleted .
A solicitação foi encaminhada para um destino de E/S ou para outra fila
A solicitação foi entregue à estrutura (chamando WdfDeviceEnqueueRequest)
WdfRequestStopAcknowledge foi chamado
A regra é verificada quando o driver sai das seguintes funções de retorno de chamada:
EvtIoStop, EvtCleanupCallback ou EvtDestroyCallback para a fila
EvtCleanupCallback ou EvtDestroyCallback para o objeto de arquivo
EvtFileClose, EvtFileCleanup, EvtDeviceSelfManagedIoSuspend, EvtDeviceSelfManagedIoFlush, EvtDeviceSelfManagedIoCleanup, EvtDeviceShutdownNotification, EvtDeviceSurpriseRemoval, EvtCleanupCallback ou EvtDestroyCallback para o dispositivo
As funções de retorno de chamada de fila de E/S para apresentação de solicitação são EvtIoDefault, EvtIoRead, EvtIoWrite, EvtIoDeviceControl e EvtIoInternalDeviceControl
Modelo de driver: KMDF
Como testar
Em tempo de compilação |
---|
Execute o Verificador de Driver Estático e especifique a regra RequestCompleted . Use as seguintes etapas para executar uma análise do código:
Para obter mais informações, consulte Usando o Verificador de Driver Estático para localizar defeitos em drivers. |
Aplica-se a
WdfDeviceEnqueueRequestWdfDmaTransactionInitializeWdfDmaTransactionInitializeUsingRequestWdfIoTargetSendInternalIoctlOthersSynchronouslyWdfIoTargetSendInternalIoctl SsynchronouslyWdfIoTargetSendIoctlSynchronouslyWdfIoTargetSendReadSynchronouslyWdfIoTargetSendWriteSynchronouslyWdfRequestCompleteWdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoostWdfRequestForwardToIoQueueWdfRequestMarkCancelableWdfRequestMarkCancelableExWdfRequestSendWdfRequestStopAcknowledgeWdfWorkItemEnqueue