Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Remoção do dispositivo
Se ocorrer um erro irrecuperável, o dispositivo DirectML pode entrar em um estado "dispositivo removido". Os erros irrecuperáveis que causam a remoção do dispositivo incluem uso inválido da API (para métodos que não retornam um HRESULT), erro de driver, falha de hardware ou condições de falta de memória (OOM).
Quando um dispositivo DirectML é removido, todas as chamadas de método no dispositivo, e todos os objetos criados por esse dispositivo, tornam-se operações nulas. Para métodos que retornam um HRESULT, um código de erro DXGI_ERROR_DEVICE_REMOVED é retornado. Você pode usar o método IDMLDevice::GetDeviceRemovedReason para verificar se o dispositivo DirectML foi removido e para recuperar um código de erro mais detalhado.
Você não pode se recuperar da remoção do dispositivo, exceto liberando o dispositivo afetado e todos os seus filhos e, em seguida, recriando o dispositivo DirectML do zero.
A remoção do dispositivo Direct3D 12 subjacente também faz com que o dispositivo DirectML seja removido. No entanto, o inverso não é possível. A remoção do dispositivo DirectML pode não fazer com que o dispositivo Direct3D 12 subjacente seja removido.
Resolução de problemas na remoção de dispositivos do DirectML e outros erros
A causa mais comum de erros do DirectML é o uso inválido da API. O uso inválido da API pode resultar em um código de erro HRESULT E_INVALIDARG ou pode resultar na remoção do dispositivo.
É altamente recomendável que você habilite a camada de depuração do DirectML durante o desenvolvimento, para detetar e depurar esses erros. A camada de depuração do DirectML executa uma validação extensiva dos parâmetros do método e do uso da API, e emitirá mensagens de saída de depuração para ajudá-lo a depurar.
Ver também
- de IA do Windows
- Usando a camada de depuração do DirectML