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.
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) |