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.
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) |