Share via


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.
Die Escapes, die ein Gerät unterstützt, werden durch einen Aufruf von DrvEscape bestimmt.

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)

Weitere Informationen

CLIPOBJ

DrvEnableDriver

DrvEscape