Stratégies de gestion des erreurs Direct2D

Cette rubrique décrit les stratégies de gestion des erreurs Direct2D. Elle contient les sections suivantes.

Utilisation de HRESULT

Si une fonction n’est pas regroupée par lot et peut avoir un échec au moment de l’exécution, elle doit retourner HRESULT pour indiquer un échec. Un échec au moment de l’exécution est un échec qui ne peut pas être évité au moment de la conception, par exemple en cas de mémoire insuffisante.

Valeur de retour des fonctions traitées par lot

Les fonctions par lot dans Direct2D sont les fonctions traitées comme une unité unique lorsque EndDraw ou Close est appelé. Il s’agit des commandes de dessin entre BeginDraw et EndDraw ou des commandes sur GeometrySink. Pour ces fonctions, des erreurs sont signalées au moment où le lot est terminé. L’erreur est retournée après EndDraw pour les commandes de dessin et après fermeture pour GeometrySink.

RenderTargets arrête le dessin si un état d’erreur est défini, mais une application peut appeler flush pour réinitialiser l’état d’erreur et reprendre le dessin.

Les fonctions obtenir et définir n’ont aucune valeur de retour. Toutefois, si une fonction définie a une entrée non valide, la couche de débogage génère un message. Dans ce cas, aucun État d’erreur n’est défini et la fonction Set ne fait rien.

Entrée non valide

Direct2D déréférence les pointeurs de sortie et les paramètres requis, ce qui entraîne des violations d’accès lorsque les pointeurs ne sont pas valides ou null.

Pointeur de sortie

Direct2D déréférence un pointeur de sortie et l’assigne à null immédiatement lors de l’entrée dans la fonction. Cela provoque une violation d’accès si un appelant passe null comme pointeur vers la valeur de retour. Cette stratégie s’applique également aux tableaux de pointeurs. Pour les autres paramètres de sortie, tels qu’un struct, le déréférencement se produit plus tard et entraîne également une violation d’accès. Toutefois, il existe des méthodes qui ont des pointeurs de sortie facultatifs (autrement dit, EndDraw, flush) qui n’entraînent pas de violation d’accès.

Paramètre obligatoire

Si null est passé à une fonction nécessitant une valeur valide, la fonction déréférence le pointeur incorrect qui entraîne une violation d’accès. Pour les paramètres d’entrée facultatifs, la valeur null est une valeur valide qui produit une valeur par défaut raisonnable.

RECTANGLEs d’entrée NaN et mal ordonnés

Dans Direct2D, NaN est considéré comme une entrée valide et les RECTos d’entrée mal ordonnés sont triés.

NaN comme entrée

NaN est considéré comme une entrée valide, bien qu’il résulte généralement de la primitive qui contient le dessin NaN not Drawing. L’API Direct2D ne fournit pas de filtrage explicite de NaN pour valider l’entrée.

RECTo d’entrée mal ordonnés

Les RECTos d’entrée mal classés sont triés de sorte que les angles supérieur, gauche et inférieur sont correctement spécifiés. Pour la sortie, les rectangles vides se présentent comme suit : {Infinity, Infinity, FloatMax, FloatMax}.