Bagikan melalui


Fungsi DrvEscape (winddi.h)

Fungsi DrvEscape digunakan untuk mengambil informasi dari perangkat yang tidak tersedia di antarmuka driver perangkat independen perangkat; kueri tertentu bergantung pada nilai parameter iEsc .

Sintaks

ULONG DrvEscape(
  [in]  SURFOBJ *pso,
  [in]  ULONG   iEsc,
  [in]  ULONG   cjIn,
  [in]  PVOID   pvIn,
  [in]  ULONG   cjOut,
  [out] PVOID   pvOut
);

Parameter

[in] pso

Arahkan ke struktur SURFOBJ yang menjelaskan permukaan tempat panggilan diarahkan.

[in] iEsc

Menentukan kueri. Arti parameter lain tergantung pada nilai ini. QUERYESCSUPPORT adalah satu-satunya nilai yang telah ditentukan; ini mengkueri apakah driver mendukung fungsi escape tertentu. Dalam hal ini, pvIn menunjuk ke nomor fungsi escape; cjOut dan pvOut diabaikan. Jika fungsi yang ditentukan didukung, nilai yang dikembalikan bukan nol.

[in] cjIn

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

[in] pvIn

Arahkan ke data input untuk panggilan. Format data input bergantung pada kueri yang ditentukan oleh parameter iEsc .

[in] cjOut

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

[out] pvOut

Arahkan ke buffer output. Format data output bergantung pada kueri yang ditentukan oleh parameter iEsc .

Mengembalikan nilai

Nilai yang dikembalikan tergantung pada kueri yang ditentukan oleh parameter iEsc . Jika fungsi yang ditentukan dalam kueri tidak didukung, nilai yang dikembalikan adalah nol.

Keterangan

Menggambar pada perangkat tidak diperbolehkan dalam fungsi ini. DrvDrawEscape akan digunakan untuk dukungan gambar khusus.

GDI meneruskan data langsung dari aplikasi klien (mungkin berbahaya) ke driver, yang berarti bahwa fungsi DrvEscape 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 ditujukkan oleh parameter pvIn valid untuk kueri yang ditentukan.
  • Verifikasi bahwa ukuran buffer output yang ditentukan (nilai dalam parameter cjOut ) valid untuk kueri yang ditentukan.
Microsoft mencadangkan rentang 0 hingga 0X10000 untuk kode escape-nya. Vendor pihak ketiga bebas memilih kode escape untuk penggunaannya sendiri di atas rentang ini. Karena kode escape khusus driver dapat bertentangan dengan yang digunakan di driver tampilan lain, penting bagi driver tampilan untuk memvalidasi parameter escape sebelum memproses escape. Salah satu cara untuk melakukan ini adalah dengan memvalidasi ukuran blok input dan output dan parameter blok input. Untuk keamanan tambahan, driver juga harus menyertakan nilai "magic" yang harus diatur dengan tepat di setiap blok input untuk memastikan bahwa blok input berasal dari sumber tepercaya.

DrvEscape bersifat opsional untuk semua driver.

Persyaratan

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

Lihat juga

DrvDrawEscape

SURFOBJ