Partager via


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 batchée et peut avoir un échec d’exécution, elle doit retourner HRESULT pour indiquer un échec. Un échec d’exécution est tout échec qui ne peut pas être évité au moment de la conception, par exemple une mémoire insuffisante.

Valeur de retour des fonctions par lots

Les fonctions par lots dans Direct2D sont les fonctions qui sont traitées en tant qu’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, les 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 Fermer 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 Get et Set n’ont aucune valeur de retour. Toutefois, si une fonction Set 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 qui entraînent 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’affecte à NULL immédiatement après l’entrée de 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 d’autres paramètres de sortie, tels qu’un struct, la déréférencement se produit ultérieurement et entraîne également une violation d’accès. Toutefois, certaines méthodes ont des pointeurs de sortie facultatifs (c’est-à-dire EndDraw, Flush) qui ne provoquent 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 tôt, ce qui entraîne une violation d’accès. Pour les paramètres d’entrée facultatifs, NULL est une valeur valide qui entraîne une valeur par défaut raisonnable.

NN et rects d’entrée mal ordonnés

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

NaN en tant qu’entrée

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

Rects d’entrée mal ordonnés

Les rects d’entrée mal ordonnés sont triés de sorte que les coins supérieur, gauche et inférieur droit soient correctement spécifiés. Pour la sortie, les rectangles vides ressemblent à ceci : {Infinity, Infinity, FloatMax, FloatMax}.