Partilhar via


Relatando falhas de dispositivos

Há três maneiras de relatar falhas de dispositivos:

Cada um dos métodos acima resulta na estrutura efetivamente removendo o dispositivo. Se os drivers do dispositivo não estiverem suportando outros dispositivos no sistema, o gerenciador de E/S descarregará os drivers.

Se a função de retorno de chamada do objeto de dispositivo de um driver retornar um valor onde NT_SUCCESS(status) é FALSE, o framework notificará o gestor PnP, que tentará reiniciar o dispositivo pedindo ao controlador de barramento para reenumerar os seus dispositivos. O seu driver será recarregado, se estava descarregado.

Se o driver chamar WdfDeviceSetFailed, ele fornecerá um argumento de entrada que determina se o dispositivo será reiniciado. Os valores de argumento são WdfDeviceFailedAttemptRestart e WdfDeviceFailedNoRestart.

UMDF Antes do UMDF 2.15, um driver UMDF deve definir esse valor como WdfDeviceFailedNoRestart. A partir da versão 2.15 do UMDF, um driver UMDF pode solicitar que o driver de barramento subjacente o reenumere chamando WdfDeviceSetFailed com FailedAction definido como WdfDeviceFailedAttemptRestart. Para obter mais informações, consulte WdfDeviceSetFailed.

Para obter mais informações sobre esses valores de argumento, consulte WDF_DEVICE_FAILED_ACTION. Antes que o callback do objeto de dispositivo de um driver retorne um valor para o qual NT_SUCCESS(status) seja igual a FALSE, o callback pode impedir reinicializações chamando WdfDeviceSetFailed com um argumento de entrada de WdfDeviceFailedNoRestart. Caso contrário, essas funções de retorno de chamada não precisam chamar WdfDeviceSetFailed.

Se, dentro de um curto período de tempo, várias tentativas de reinicialização consecutivas falharem (porque o driver reiniciado relata novamente um erro), a estrutura para de tentar reiniciar o dispositivo.

Se a função EvtDeviceD0Entry de um driver de barramento retornar um valor para o qual NT_SUCCESS(status) é igual a FALSE, a estrutura ainda poderá chamar as funções EvtDeviceD0Entry de drivers associados aos dispositivos filhos do driver de barramento.