Bagikan melalui


PDD_WAITFORVERTICALBLANK fungsi panggilan balik (ddrawint.h)

Fungsi panggilan balik DdWaitForVerticalBlank mengembalikan status kosong vertikal perangkat.

Sintaks

PDD_WAITFORVERTICALBLANK PddWaitforverticalblank;

DWORD PddWaitforverticalblank(
  PDD_WAITFORVERTICALBLANKDATA unnamedParam1
)
{...}

Parameter

unnamedParam1

Menunjuk ke struktur DD_WAITFORVERTICALBLANKDATA yang berisi informasi yang diperlukan untuk mendapatkan status kosong vertikal.

Nilai kembali

DdWaitForVerticalBlank mengembalikan salah satu kode panggilan balik berikut:

Keterangan

Tergantung pada nilai anggota dwFlags dari struktur DD_WAITFORVERTICALBLANKDATA di lpWaitForVerticalBlank, driver harus melakukan hal berikut:

  • Jika dwFlags DDWAITVB_I_TESTVB, driver harus meminta status pengosongan vertikal saat ini. Driver harus mengatur anggota bIsInVB dari DD_WAITFORVERTICALBLANKDATA ke TRUE jika monitor saat ini kosong vertikal; jika tidak, driver harus mengatur bIsInVB ke FALSE.
  • Jika dwFlags DDWAITVB_BLOCKBEGIN, driver harus memblokir dan menunggu hingga kosong vertikal dimulai. Jika kosong vertikal sedang berlangsung saat driver memulai blok, driver harus menunggu hingga kosong vertikal berikutnya dimulai sebelum kembali.
  • Jika dwFlags DDWAITVB_BLOCKEND, driver harus memblokir dan menunggu hingga kosong vertikal berakhir.
Ketika driver berhasil menangani tindakan yang ditentukan dalam dwFlags, driver harus mengatur DD_OK di anggota ddRVal DD_WAITFORVERTICALBLANKDATA dan mengembalikan DDHAL_DRIVER_HANDLED. Driver harus mengembalikan DDHAL_DRIVER_NOTHANDLED untuk bendera yang tidak dapat ditangani.

DdWaitForVerticalBlank memungkinkan aplikasi untuk menyinkronkan dirinya dengan interval kosong vertikal (VBI).

CatatanDdWaitForVerticalBlank tidak boleh memasuki perulangan polling jika status daya monitor akan menyebabkan driver macet. Misalnya, selama power-down monitor, aplikasi mungkin memanggil WaitForVerticalBlank. Runtime DirectDraw memanggil titik masuk DdWaitForVerticalBlank driver tampilan, yang menunggu status berubah. Jika monitor dimatikan, nilai ini tidak akan pernah berubah--kecuali penulis driver bersiap untuk skenario ini. Salah satu solusinya adalah menyertakan waktu habis dalam perulangan polling sambil menunggu kosong vertikal. Contoh driver Permedia2 hanya diatur ke tidak polling sama sekali jika monitor dimatikan.

Ada juga masalah dengan WhQL Display Compatibility Tests (DCTs). Salah satu DCT untuk manajemen daya mematikan monitor dan kemudian melakukan polling status kosong vertikal, menunggunya berubah. Jika driver selalu melaporkan status kosong vertikal yang sama ketika monitor dimatikan, maka aplikasi pengujian akan berhenti menunggu hasilnya berubah. Ini diperbaiki pada driver sampel Permedia2 dengan mengembalikan hasil bergantian saat monitor dimatikan. Artinya, pertama kali titik entri DdWaitForVerticalBlank driver dipanggil dengan bendera DDWAIT_I_TESTVB (ketika monitor dimatikan), titik masuk mengembalikan FALSE, saat berikutnya kembali TRUE, lain kali FALSE, dll.

 

Persyaratan

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

Lihat juga

DD_WAITFORVERTICALBLANKDATA