Fonction DrvEscape (winddi.h)
La fonction DrvEscape est utilisée pour récupérer des informations à partir d’un appareil qui n’est pas disponible dans une interface de pilote de périphérique indépendante de l’appareil ; la requête particulière dépend de la valeur du paramètre iEsc .
Syntaxe
ULONG DrvEscape(
[in] SURFOBJ *pso,
[in] ULONG iEsc,
[in] ULONG cjIn,
[in] PVOID pvIn,
[in] ULONG cjOut,
[out] PVOID pvOut
);
Paramètres
[in] pso
Pointeur vers une structure SURFOBJ qui décrit la surface vers laquelle l’appel est dirigé.
[in] iEsc
Spécifie une requête. La signification des autres paramètres dépend de cette valeur. QUERYESCSUPPORT est la seule valeur prédéfinie ; il demande si le pilote prend en charge une fonction d’échappement particulière. Dans ce cas, pvIn pointe vers un numéro de fonction d’échappement ; cjOut et pvOut sont ignorés. Si la fonction spécifiée est prise en charge, la valeur de retour est différente de zéro.
[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 requête spécifiée par le paramètre iEsc .
[in] cjOut
Spécifie la taille, en octets, de la mémoire tampon pointée vers pvOut.
[out] pvOut
Pointeur vers la mémoire tampon de sortie. Le format des données de sortie dépend de la requête spécifiée par le paramètre iEsc .
Valeur retournée
La valeur de retour dépend de la requête spécifiée par le paramètre iEsc . Si la fonction spécifiée dans la requête n’est pas prise en charge, la valeur de retour est zéro.
Remarques
Le dessin sur l’appareil n’est pas autorisé dans cette fonction. DrvDrawEscape doit être utilisé pour la prise en charge du dessin spécialisé.
GDI transmet des données directement d’une application cliente (éventuellement malveillante) au pilote, ce qui signifie que la fonction DrvEscape 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 (la 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.
- Vérifiez que la taille de la mémoire tampon de sortie spécifiée (la valeur dans le paramètre cjOut ) est valide pour la requête spécifiée.
DrvEscape est facultatif pour tous les pilotes.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | winddi.h (inclure Winddi.h) |