Função DrvDrawEscape (winddi.h)
A função DrvDrawEscape é o ponto de entrada que atende a mais de uma chamada de função; a função específica depende do valor do parâmetro iEsc .
Sintaxe
ULONG DrvDrawEscape(
[in] SURFOBJ *pso,
[in] ULONG iEsc,
[in] CLIPOBJ *pco,
[in] RECTL *prcl,
[in] ULONG cjIn,
[in] PVOID pvIn
);
Parâmetros
[in] pso
Ponteiro para uma estrutura SURFOBJ que identifica a superfície para a qual a chamada é direcionada.
[in] iEsc
Especifica a operação a ser executada. Os significados dos parâmetros restantes dependem desse parâmetro. Esse parâmetro pode ser o valor a seguir.
Valor | Significado |
---|---|
ESC_PASSTHROUGH | Passa dados brutos do dispositivo para o driver de dispositivo. O número de bytes de dados brutos é indicado por cjIn. Os dados são apontados pelo pvIn. O valor retornado será o número de bytes gravados se a função for bem-sucedida. Caso contrário, será zero e um código de erro será registrado. |
[in] pco
Ponteiro para uma estrutura CLIPOBJ que pode ser consultada para localizar a área na superfície que o chamador pode substituir.
[in] prcl
Ponteiro para uma estrutura RECTL que define o retângulo de janela na superfície. O aplicativo não sabe a posição da janela na superfície. A GDI fornece esse retângulo e mantém um bloqueio que garante que o retângulo esteja estável durante a chamada. As coordenadas recebidas do aplicativo são relativas ao canto superior esquerdo do retângulo da janela.
[in] cjIn
Especifica o tamanho, em bytes, do buffer apontado por pvIn.
[in] pvIn
Ponteiro para os dados de entrada da chamada. O formato dos dados de entrada depende da função especificada por iEsc.
Valor retornado
O valor retornado depende da função especificada por iEsc. O driver deverá retornar 0xFFFFFFFF se uma função sem suporte for chamada.
Comentários
Esse ponto de entrada difere do DrvEscape porque uma estrutura CLIPOBJ é fornecida. Isso permite que um driver implemente suas próprias funções de desenho em um ambiente com janelas.
A GDI passa dados diretamente de um aplicativo cliente (possivelmente mal-intencionado) para o driver, o que significa que a função DrvDrawEscape deve validar todos os argumentos de entrada. Especificamente, essa função deve:
- Verifique se o valor recebido no parâmetro iEsc representa uma consulta válida.
- Verifique se o tamanho do buffer de entrada (o valor no parâmetro cjIn ) é válido para a consulta especificada.
- Verifique se o conteúdo do buffer apontado pelo parâmetro pvIn é válido para a consulta especificada.
Para obter mais informações sobre os códigos de escape que a Microsoft reserva, consulte DrvEscape.
DrvDrawEscape é opcional para todos os drivers.
Requisitos
Plataforma de Destino | Área de Trabalho |
Cabeçalho | winddi.h (inclua Winddi.h) |