Funzione DrvEscape (winddi.h)

La funzione DrvEscape viene usata per recuperare informazioni da un dispositivo che non è disponibile in un'interfaccia del driver di dispositivo indipendente dal dispositivo; la query specifica dipende dal valore del parametro iEsc .

Sintassi

ULONG DrvEscape(
  [in]  SURFOBJ *pso,
  [in]  ULONG   iEsc,
  [in]  ULONG   cjIn,
  [in]  PVOID   pvIn,
  [in]  ULONG   cjOut,
  [out] PVOID   pvOut
);

Parametri

[in] pso

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

[in] iEsc

Specifica una query. Il significato degli altri parametri dipende da questo valore. QUERYESCSUPPORT è l'unico valore predefinito; esegue una query sul fatto che il driver supporti una determinata funzione di escape. In questo caso , pvIn punta a un numero di funzione di escape; cjOut e pvOut vengono ignorati. Se la funzione specificata è supportata, il valore restituito è diverso da zero.

[in] cjIn

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

[in] pvIn

Puntatore ai dati di input per la chiamata. Il formato dei dati di input dipende dalla query specificata dal parametro iEsc .

[in] cjOut

Specifica le dimensioni, in byte, del buffer a cui fa riferimento pvOut.

[out] pvOut

Puntatore al buffer di output. Il formato dei dati di output dipende dalla query specificata dal parametro iEsc .

Valore restituito

Il valore restituito dipende dalla query specificata dal parametro iEsc . Se la funzione specificata nella query non è supportata, il valore restituito è zero.

Commenti

Il disegno sul dispositivo non è consentito in questa funzione. DrvDrawEscape deve essere usato per il supporto di disegno specializzato.

GDI passa i dati direttamente da un'applicazione client (possibilmente dannosa) al driver, il che significa che la funzione DrvEscape 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.
  • Verificare che le dimensioni del buffer di output specificato (il valore nel parametro cjOut ) siano valide per la query specificata.
Microsoft riserva l'intervallo 0 a 0X10000 per i relativi codici di escape. I fornitori di terze parti sono liberi di scegliere i codici di escape per il proprio uso sopra questo intervallo. Poiché i codici di escape specifici del driver possono essere in conflitto con quelli usati in altri driver di visualizzazione, è importante che un driver di visualizzazione convalida i parametri di escape prima di elaborare l'escape. Un modo per eseguire questa operazione consiste nel convalidare le dimensioni del blocco di input e di output e i parametri del blocco di input. Per la sicurezza aggiunta, i driver devono includere anche un valore "magic" che deve essere impostato in modo appropriato in ogni blocco di input per garantire che il blocco di input sia da un'origine attendibile.

DrvEscape è facoltativo per tutti i driver.

Requisiti

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

Vedi anche

DrvDrawEscape

SURFOBJ