Función DrvDrawEscape (winddi.h)
La función DrvDrawEscape es el punto de entrada que atiende más de una llamada de función; la función determinada depende del valor del parámetro iEsc .
Sintaxis
ULONG DrvDrawEscape(
[in] SURFOBJ *pso,
[in] ULONG iEsc,
[in] CLIPOBJ *pco,
[in] RECTL *prcl,
[in] ULONG cjIn,
[in] PVOID pvIn
);
Parámetros
[in] pso
Puntero a una estructura SURFOBJ que identifica la superficie a la que se dirige la llamada.
[in] iEsc
Especifica la operación que se va a realizar. Los significados de los parámetros restantes dependen de este parámetro. Este parámetro puede ser el siguiente valor.
Value | Significado |
---|---|
ESC_PASSTHROUGH | Pasa los datos de dispositivo sin procesar al controlador de dispositivo. El número de bytes de datos sin procesar se indica mediante cjIn. PvIn apunta a los datos. El valor devuelto es el número de bytes escritos si la función se realiza correctamente. De lo contrario, es cero y se registra un código de error. |
[in] pco
Puntero a una estructura CLIPOBJ que se puede consultar para buscar el área en la superficie que el autor de la llamada puede sobrescribir.
[in] prcl
Puntero a una estructura RECTL que define el rectángulo de ventana en la superficie. La aplicación no conoce la posición de la ventana en la superficie. GDI proporciona este rectángulo y contiene un bloqueo que garantiza que el rectángulo sea estable mientras dure la llamada. Las coordenadas recibidas de la aplicación son relativas a la esquina superior izquierda del rectángulo de ventana.
[in] cjIn
Especifica el tamaño, en bytes, del búfer al que apunta pvIn.
[in] pvIn
Puntero a los datos de entrada de la llamada. El formato de los datos de entrada depende de la función especificada por iEsc.
Valor devuelto
El valor devuelto depende de la función especificada por iEsc. El controlador debe devolver 0xFFFFFFFF si se llama a una función no admitida.
Comentarios
Este punto de entrada difiere de DrvEscape en que se proporciona una estructura CLIPOBJ. Esto permite que un controlador implemente sus propias funciones de dibujo en un entorno con ventanas.
GDI pasa datos directamente desde una aplicación cliente (posiblemente malintencionada) al controlador, lo que significa que la función DrvDrawEscape debe validar todos los argumentos de entrada. En concreto, esta función debe:
- Compruebe que el valor recibido en el parámetro iEsc representa una consulta válida.
- Compruebe que el tamaño del búfer de entrada (el valor del parámetro cjIn ) es válido para la consulta especificada.
- Compruebe que el contenido del búfer al que apunta el parámetro pvIn es válido para la consulta especificada.
Para obtener más información sobre los códigos de escape que Microsoft reserva, consulte DrvEscape.
DrvDrawEscape es opcional para todos los controladores.
Requisitos
Plataforma de destino | Escritorio |
Encabezado | winddi.h (incluya Winddi.h) |