Regla RequestCompleted (kmdf)
La regla RequestCompleted especifica que, para un controlador que no es de filtro, cada solicitud presentada a la cola de E/S predeterminada del controlador debe completarse, a menos que se aplaza o reenvíe la solicitud, o si se llama a WdfRequestStopAcknowledge .
Se debe completar una solicitud de E/S presentada a la cola predeterminada del controlador a través de una de las funciones de devolución de llamada de cola antes de salir de las funciones de devolución de llamada de solicitud de E/S, excepto en los casos siguientes:
La solicitud se aplaza (por ejemplo, en un DPC o un elemento de trabajo). En este caso, puede usar la regla DeferredRequestCompleted .
La solicitud se reenvía a un destino de E/S o a otra cola.
La solicitud se entregó al marco (llamando a WdfDeviceEnqueueRequest)
Se llamó a WdfRequestStopAcknowledge
La regla se comprueba cuando el controlador sale de las siguientes funciones de devolución de llamada:
EvtIoStop, EvtCleanupCallback o EvtDestroyCallback para la cola
EvtCleanupCallback o EvtDestroyCallback para el objeto de archivo
EvtFileClose, EvtFileCleanup, EvtDeviceSelfManagedIoSuspend, EvtDeviceSelfManagedIoFlush, EvtDeviceSelfManagedIoCleanup, EvtDeviceShutdownNotification, EvtDeviceSurpriseRemoval, EvtCleanupCallback o EvtDestroyCallback para el dispositivo
Las funciones de devolución de llamada de cola de E/S para la presentación de solicitudes son EvtIoDefault, EvtIoRead, EvtIoWrite, EvtIoDeviceControl y EvtIoInternalDeviceControl
Modelo de controlador: KMDF
Cómo probar
En tiempo de compilación |
---|
Ejecute el Comprobador de controladores estáticos y especifique la regla RequestCompleted . Usa los pasos siguientes para ejecutar un análisis de tu código:
Para obtener más información, vea Usar comprobador de controladores estáticos para buscar defectos en controladores. |
Se aplica a
WdfDeviceEnqueueRequestWdfDmaTransactionInitializeWdfDmaTransactionInitializeUsingRequestWdfIoTargetSendInternalIoctlOthersSynchronouslyWdfIoTargetSendInternalIoctlSynchronouslyWdfIoTargetSendIoctlSynchronouslyWdfIoTargetSendReadSynchronouslyWdfIoTargetSendWriteSynchronouslyWdfRequestCompleteWdfRequestCompleteWithInformationWdfRequestCompleteWithPriorityBoostWdfRequestForwardToIoQueueWdfRequestMarkCancelableWdfRequestMarkCancelableExWdfRequestSendWdfRequestStopAcknowledgeWdfWorkItemEnqueue