Compartir a través de


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.
Los escapes que admite un dispositivo se determinan mediante una llamada a DrvEscape.

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)

Consulte también

CLIPOBJ

DrvEnableDriver

DrvEscape