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.
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) |