Partager via


Gestion des erreurs et de la suppression d’appareils dans DirectML

Suppression de l’appareil

Si une erreur irrécupérable se produit, le dispositif DirectML peut passer à un état « appareil retiré ». Les erreurs irrécupérables qui provoquent le retrait de l'appareil incluent une utilisation non valide de l’API (pour les méthodes qui ne retournent pas de HRESULT), une erreur de pilote, une défaillance matérielle ou des conditions hors mémoire (OOM).

Lorsqu’un appareil DirectML est supprimé, tous les appels de méthodes sur l’appareil, et chaque objet créé par cet appareil, deviennent des opérations nulles. Pour les méthodes qui retournent un HRESULT, un code d’erreur DXGI_ERROR_DEVICE_REMOVED est retourné. Vous pouvez utiliser la méthode IDMLDevice ::GetDeviceRemovedReason pour vérifier si l’appareil DirectML a été supprimé et pour récupérer un code d’erreur plus détaillé.

Vous ne pouvez pas récupérer après la suppression de l’appareil, sauf en libérant l’appareil concerné et tous ses enfants, puis en recréant l’appareil DirectML depuis le début.

La suppression de l’appareil Direct3D 12 sous-jacent entraîne également la suppression de l’appareil DirectML. En revanche, l'inverse n'est pas vrai. La suppression d’appareils DirectML peut ne pas nécessairement entraîner la suppression de l’appareil Direct3D 12 sous-jacent.

Débogage de la suppression d’appareils DirectML et d’autres erreurs

La cause la plus courante des erreurs DirectML est l’utilisation d’API non valide. L’utilisation de l’API non valide peut entraîner une E_INVALIDARG code d’erreur HRESULT, ou elle peut entraîner la suppression de l’appareil.

Nous vous recommandons vivement d’activer la couche de débogage DirectML pendant votre développement, afin d’intercepter et de déboguer ces erreurs. La couche de débogage DirectML effectue une validation approfondie des paramètres de méthode et de l’utilisation de l’API, et émet des messages de sortie de débogage pour vous aider à déboguer.

Voir aussi