DrvDrawEscape-Funktion (winddi.h)
Die DrvDrawEscape-Funktion ist der Einstiegspunkt, der mehrere Funktionsaufrufe bedient. die jeweilige Funktion hängt vom Wert des iEsc-Parameters ab.
Syntax
ULONG DrvDrawEscape(
[in] SURFOBJ *pso,
[in] ULONG iEsc,
[in] CLIPOBJ *pco,
[in] RECTL *prcl,
[in] ULONG cjIn,
[in] PVOID pvIn
);
Parameter
[in] pso
Zeiger auf eine SURFOBJ-Struktur , die die Oberfläche identifiziert, an die der Aufruf gerichtet wird.
[in] iEsc
Gibt den auszuführenden Vorgang an. Die Bedeutung der verbleibenden Parameter hängt von diesem Parameter ab. Dieser Parameter kann der folgende Wert sein.
Wert | Bedeutung |
---|---|
ESC_PASSTHROUGH | Übergibt unformatierte Gerätedaten an den Gerätetreiber. Die Anzahl der Bytes von Rohdaten wird durch cjIn angegeben. Auf die Daten wird von pvIn verwiesen. Der Rückgabewert ist die Anzahl der Bytes, die geschrieben werden, wenn die Funktion erfolgreich ist. Andernfalls ist er 0, und ein Fehlercode wird protokolliert. |
[in] pco
Zeiger auf eine CLIPOBJ-Struktur , die abgefragt werden kann, um den Bereich auf der Oberfläche zu finden, den der Aufrufer überschreiben kann.
[in] prcl
Zeiger auf eine RECTL-Struktur , die das Fensterrechteck auf der Oberfläche definiert. Die Anwendung kennt nicht die Position des Fensters auf der Oberfläche. GDI stellt dieses Rechteck bereit und enthält eine Sperre, die sicherstellt, dass das Rechteck für die Dauer des Aufrufs stabil ist. Koordinaten, die von der Anwendung empfangen werden, sind relativ zur oberen linken Ecke des Fensterrechtecks.
[in] cjIn
Gibt die Größe des Puffers in Bytes an, auf den von pvIn verwiesen wird.
[in] pvIn
Zeiger auf die Eingabedaten für den Aufruf. Das Format der Eingabedaten hängt von der von iEsc angegebenen Funktion ab.
Rückgabewert
Der Rückgabewert hängt von der von iEsc angegebenen Funktion ab. Der Treiber sollte 0xFFFFFFFF zurückgeben, wenn eine nicht unterstützte Funktion aufgerufen wird.
Hinweise
Dieser Einstiegspunkt unterscheidet sich von DrvEscape dadurch, dass eine CLIPOBJ-Struktur bereitgestellt wird. Dadurch kann ein Treiber eigene Zeichnungsfunktionen in einer Umgebung mit Fenstern implementieren.
GDI übergibt Daten direkt von einer (möglicherweise böswilligen) Clientanwendung an den Treiber, was bedeutet, dass die DrvDrawEscape-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 Parameter cjIn ) für die angegebene Abfrage gültig ist.
- Vergewissern Sie sich, dass der Inhalt des Puffers, auf den der parameter pvIn verweist, für die angegebene Abfrage gültig ist.
Weitere Informationen zu den Escapecodes, die Microsoft reserviert, finden Sie unter DrvEscape.
DrvDrawEscape ist optional für alle Treiber.
Anforderungen
Zielplattform | Desktop |
Kopfzeile | winddi.h (einschließlich Winddi.h) |