Partager via


Fonction DrvDrawEscape (winddi.h)

La fonction DrvDrawEscape est le point d’entrée qui sert plusieurs appels de fonction ; la fonction particulière dépend de la valeur du paramètre iEsc .

Syntaxe

ULONG DrvDrawEscape(
  [in] SURFOBJ *pso,
  [in] ULONG   iEsc,
  [in] CLIPOBJ *pco,
  [in] RECTL   *prcl,
  [in] ULONG   cjIn,
  [in] PVOID   pvIn
);

Paramètres

[in] pso

Pointeur vers une structure SURFOBJ qui identifie la surface vers laquelle l’appel est dirigé.

[in] iEsc

Indique l'opération à effectuer. La signification des paramètres restants dépend de ce paramètre. Ce paramètre peut être la valeur suivante.

Valeur Signification
ESC_PASSTHROUGH Transmet les données brutes du périphérique au pilote de périphérique. Le nombre d’octets de données brutes est indiqué par cjIn. Les données sont pointées par pvIn. La valeur de retour est le nombre d’octets écrits si la fonction réussit. Sinon, il est égal à zéro et un code d’erreur est journalisé.

[in] pco

Pointeur vers une structure CLIPOBJ qui peut être interrogée pour trouver la zone sur la surface que l’appelant peut remplacer.

[in] prcl

Pointeur vers une structure RECTL qui définit le rectangle de fenêtre sur la surface. L’application ne connaît pas la position de la fenêtre sur la surface. GDI fournit ce rectangle et contient un verrou qui garantit la stabilité du rectangle pendant la durée de l’appel. Les coordonnées reçues de l’application sont relatives au coin supérieur gauche du rectangle de fenêtre.

[in] cjIn

Spécifie la taille, en octets, de la mémoire tampon pointée par pvIn.

[in] pvIn

Pointeur vers les données d’entrée de l’appel. Le format des données d’entrée dépend de la fonction spécifiée par iEsc.

Valeur retournée

La valeur de retour dépend de la fonction spécifiée par iEsc. Le pilote doit retourner 0xFFFFFFFF si une fonction non prise en charge est appelée.

Remarques

Ce point d’entrée diffère de DrvEscape en ce qu’une structure CLIPOBJ est fournie. Cela permet à un pilote d’implémenter ses propres fonctions de dessin dans un environnement fenêtré.

GDI transmet les données directement d’une application cliente (éventuellement malveillante) au pilote, ce qui signifie que la fonction DrvDrawEscape doit valider tous les arguments d’entrée. Plus précisément, cette fonction doit :

  • Vérifiez que la valeur reçue dans le paramètre iEsc représente une requête valide.
  • Vérifiez que la taille de la mémoire tampon d’entrée (valeur dans le paramètre cjIn ) est valide pour la requête spécifiée.
  • Vérifiez que le contenu de la mémoire tampon pointée vers le paramètre pvIn est valide pour la requête spécifiée.
Les échappements pris en charge par un appareil sont déterminés par un appel à DrvEscape.

Pour plus d’informations sur les codes d’échappement réservés par Microsoft, consultez DrvEscape.

DrvDrawEscape est facultatif pour tous les pilotes.

Configuration requise

   
Plateforme cible Bureau
En-tête winddi.h (inclure Winddi.h)

Voir aussi

CLIPOBJ

DrvEnableDriver

DrvEscape