DrvEscape-Funktion (winddi.h)
Die DrvEscape-Funktion wird zum Abrufen von Informationen von einem Gerät verwendet, das in einer geräteunabhängigen Gerätetreiberschnittstelle nicht verfügbar ist. die jeweilige Abfrage hängt vom Wert des iEsc-Parameters ab.
Syntax
ULONG DrvEscape(
[in] SURFOBJ *pso,
[in] ULONG iEsc,
[in] ULONG cjIn,
[in] PVOID pvIn,
[in] ULONG cjOut,
[out] PVOID pvOut
);
Parameter
[in] pso
Zeiger auf eine SURFOBJ-Struktur , die die Oberfläche beschreibt, an die der Aufruf gerichtet wird.
[in] iEsc
Gibt eine Abfrage an. Die Bedeutung der anderen Parameter hängt von diesem Wert ab. QUERYESCSUPPORT ist der einzige vordefinierte Wert; Sie fragt ab, ob der Treiber eine bestimmte Escapefunktion unterstützt. In diesem Fall verweist pvIn auf eine Escapefunktionsnummer; cjOut und pvOut werden ignoriert. Wenn die angegebene Funktion unterstützt wird, ist der Rückgabewert ungleich null.
[in] cjIn
Gibt die Größe des Puffers in Byte an, auf den pvIn verweist.
[in] pvIn
Zeiger auf die Eingabedaten für den Aufruf. Das Format der Eingabedaten hängt von der abfrage ab, die durch den iEsc-Parameter angegeben wird.
[in] cjOut
Gibt die Größe des Puffers in Bytes an, auf den pvOut verweist.
[out] pvOut
Zeiger auf den Ausgabepuffer. Das Format der Ausgabedaten hängt von der Abfrage ab, die durch den iEsc-Parameter angegeben wird.
Rückgabewert
Der Rückgabewert ist von der abfrage abhängig, die durch den iEsc-Parameter angegeben wird. Wenn die in der Abfrage angegebene Funktion nicht unterstützt wird, ist der Rückgabewert null.
Hinweise
Das Zeichnen auf dem Gerät ist in dieser Funktion nicht zulässig. DrvDrawEscape soll für die spezielle Zeichnungsunterstützung verwendet werden.
GDI übergibt Daten direkt von einer (möglicherweise schädlichen) Clientanwendung an den Treiber. Dies bedeutet, dass die DrvEscape-Funktion alle Eingabeargumente überprüfen muss. Insbesondere muss diese Funktion Folgendes ausführen:
- Stellen Sie sicher, dass der im iEsc-Parameter empfangene Wert eine gültige Abfrage darstellt.
- Überprüfen Sie, ob die Größe des Eingabepuffers (der Wert im cjIn-Parameter ) für die angegebene Abfrage gültig ist.
- Überprüfen Sie, ob der Inhalt des Puffers, auf den der pvIn-Parameter verweist, für die angegebene Abfrage gültig ist.
- Überprüfen Sie, ob die Größe des angegebenen Ausgabepuffers (der Wert im cjOut-Parameter ) für die angegebene Abfrage gültig ist.
DrvEscape ist für alle Treiber optional.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Desktop |
Kopfzeile | winddi.h (einschließlich Winddi.h) |