Bagikan melalui


Fungsi DrvDrawEscape (winddi.h)

Fungsi DrvDrawEscape adalah titik masuk yang melayani lebih dari satu panggilan fungsi; fungsi tertentu tergantung pada nilai parameter iEsc .

Sintaks

ULONG DrvDrawEscape(
  [in] SURFOBJ *pso,
  [in] ULONG   iEsc,
  [in] CLIPOBJ *pco,
  [in] RECTL   *prcl,
  [in] ULONG   cjIn,
  [in] PVOID   pvIn
);

Parameter

[in] pso

Penunjuk ke struktur SURFOBJ yang mengidentifikasi permukaan tempat panggilan diarahkan.

[in] iEsc

Menentukan operasi yang akan dilakukan. Arti parameter yang tersisa tergantung pada parameter ini. Parameter ini bisa menjadi nilai berikut.

Nilai Makna
ESC_PASSTHROUGH Meneruskan data perangkat mentah ke driver perangkat. Jumlah byte data mentah ditunjukkan oleh cjIn. Data diacu oleh pvIn. Nilai yang dikembalikan adalah jumlah byte yang ditulis jika fungsi berhasil. Jika tidak, itu adalah nol, dan kode kesalahan dicatat.

[in] pco

Penunjuk ke struktur CLIPOBJ yang dapat dikueri untuk menemukan area di permukaan yang dapat ditimpa pemanggil.

[in] prcl

Penunjuk ke struktur RECTL yang menentukan persegi panjang jendela di permukaan. Aplikasi tidak tahu posisi jendela di permukaan. GDI memasok persegi panjang ini dan memegang kunci yang memastikan persegi panjang stabil selama panggilan. Koordinat yang diterima dari aplikasi relatif terhadap sudut kiri atas persegi panjang jendela.

[in] cjIn

Menentukan ukuran, dalam byte, dari buffer yang diacu oleh pvIn.

[in] pvIn

Arahkan ke data input untuk panggilan. Format data input tergantung pada fungsi yang ditentukan oleh iEsc.

Nilai kembali

Nilai yang dikembalikan tergantung pada fungsi yang ditentukan oleh iEsc. Driver harus mengembalikan 0xFFFFFFFF jika fungsi yang tidak didukung dipanggil.

Keterangan

Titik masuk ini berbeda dari DrvEscape karena struktur CLIPOBJ disediakan. Ini memungkinkan driver untuk mengimplementasikan fungsi gambarnya sendiri di lingkungan berjendela.

GDI meneruskan data langsung dari aplikasi klien (mungkin berbahaya) ke driver, yang berarti bahwa fungsi DrvDrawEscape harus memvalidasi semua argumen input. Secara khusus, fungsi ini harus:

  • Verifikasi bahwa nilai yang diterima dalam parameter iEsc mewakili kueri yang valid.
  • Verifikasi bahwa ukuran buffer input (nilai dalam parameter cjIn ) valid untuk kueri yang ditentukan.
  • Verifikasi bahwa konten buffer yang ditujukan oleh parameter pvIn valid untuk kueri yang ditentukan.
Escape yang didukung perangkat ditentukan oleh panggilan ke DrvEscape.

Untuk informasi selengkapnya tentang kode escape yang dicadangkan Microsoft, lihat DrvEscape.

DrvDrawEscape bersifat opsional untuk semua driver.

Persyaratan

   
Target Platform Desktop
Header winddi.h (termasuk Winddi.h)

Lihat juga

CLIPOBJ

DrvEnableDriver

DrvEscape