Funzione DrvDrawEscape (winddi.h)

La funzione DrvDrawEscape è il punto di ingresso che serve più di una chiamata di funzione; la funzione specifica dipende dal valore del parametro iEsc .

Sintassi

ULONG DrvDrawEscape(
  [in] SURFOBJ *pso,
  [in] ULONG   iEsc,
  [in] CLIPOBJ *pco,
  [in] RECTL   *prcl,
  [in] ULONG   cjIn,
  [in] PVOID   pvIn
);

Parametri

[in] pso

Puntatore a una struttura SURFOBJ che identifica la superficie a cui viene indirizzata la chiamata.

[in] iEsc

Specifica l'operazione da eseguire. I significati dei parametri rimanenti dipendono da questo parametro. Questo parametro può essere il valore seguente.

Valore Significato
ESC_PASSTHROUGH Passa i dati non elaborati del dispositivo al driver di dispositivo. Il numero di byte di dati non elaborati è indicato da cjIn. I dati puntano a pvIn. Il valore restituito è il numero di byte scritti se la funzione ha esito positivo. In caso contrario, è zero e viene registrato un codice di errore.

[in] pco

Puntatore a una struttura CLIPOBJ su cui è possibile eseguire una query per trovare l'area sulla superficie che il chiamante può sovrascrivere.

[in] prcl

Puntatore a una struttura RECTL che definisce il rettangolo della finestra sulla superficie. L'applicazione non conosce la posizione della finestra sulla superficie. GDI fornisce questo rettangolo e contiene un blocco che garantisce che il rettangolo sia stabile per la durata della chiamata. Le coordinate ricevute dall'applicazione sono relative all'angolo superiore sinistro del rettangolo della finestra.

[in] cjIn

Specifica le dimensioni, in byte, del buffer a cui punta pvIn.

[in] pvIn

Puntatore ai dati di input per la chiamata. Il formato dei dati di input dipende dalla funzione specificata da iEsc.

Valore restituito

Il valore restituito dipende dalla funzione specificata da iEsc. Il driver deve restituire 0xFFFFFFFF se viene chiamata una funzione non supportata.

Commenti

Questo punto di ingresso differisce da DrvEscape in quanto viene fornita una struttura CLIPOBJ. Ciò consente a un driver di implementare le proprie funzioni di disegno in un ambiente finestrato.

GDI passa i dati direttamente da un'applicazione client (possibilmente dannosa) al driver, il che significa che la funzione DrvDrawEscape deve convalidare tutti gli argomenti di input. In particolare, questa funzione deve:

  • Verificare che il valore ricevuto nel parametro iEsc rappresenti una query valida.
  • Verificare che le dimensioni del buffer di input (il valore nel parametro cjIn ) siano valide per la query specificata.
  • Verificare che il contenuto del buffer a cui punta il parametro pvIn sia valido per la query specificata.
I caratteri di escape supportati da un dispositivo sono determinati da una chiamata a DrvEscape.

Per altre informazioni sui codici di escape riservati da Microsoft, vedere DrvEscape.

DrvDrawEscape è facoltativo per tutti i driver.

Requisiti

   
Piattaforma di destinazione Desktop
Intestazione winddi.h (include Winddi.h)

Vedi anche

CLIPOBJ

DrvEnableDriver

DrvEscape