PDD_WAITFORVERTICALBLANK função de retorno de chamada (ddrawint.h)

A função de retorno de chamada DdWaitForVerticalBlank retorna a status vertical em branco do dispositivo.

Sintaxe

PDD_WAITFORVERTICALBLANK PddWaitforverticalblank;

DWORD PddWaitforverticalblank(
  PDD_WAITFORVERTICALBLANKDATA unnamedParam1
)
{...}

Parâmetros

unnamedParam1

Aponta para uma estrutura DD_WAITFORVERTICALBLANKDATA que contém as informações necessárias para obter a status vertical em branco.

Retornar valor

DdWaitForVerticalBlank retorna um dos seguintes códigos de retorno de chamada:

Comentários

Dependendo do valor do membro dwFlags da estrutura DD_WAITFORVERTICALBLANKDATA em lpWaitForVerticalBlank, o driver deve fazer o seguinte:

  • Se dwFlags for DDWAITVB_I_TESTVB, o driver deverá consultar o status de em branco vertical atual. O driver deve definir o membro bIsInVB de DD_WAITFORVERTICALBLANKDATA como TRUE se o monitor estiver atualmente em branco vertical; caso contrário, o driver deve definir bIsInVB como FALSE.
  • Se dwFlags for DDWAITVB_BLOCKBEGIN, o driver deverá bloquear e aguardar até que um espaço em branco vertical comece. Se um espaço em branco vertical estiver em andamento quando o driver iniciar o bloco, o driver deverá aguardar até que o próximo espaço em branco vertical comece antes de retornar.
  • Se dwFlags for DDWAITVB_BLOCKEND, o driver deverá bloquear e aguardar até que um espaço em branco vertical termine.
Quando o driver manipula com êxito a ação especificada em dwFlags, ele deve definir DD_OK no membro ddRVal do DD_WAITFORVERTICALBLANKDATA e retornar DDHAL_DRIVER_HANDLED. O driver deve retornar DDHAL_DRIVER_NOTHANDLED para os sinalizadores que ele não consegue manipular.

DdWaitForVerticalBlank permite que um aplicativo se sincronize com o VBI (intervalo de espaço em branco vertical).

ObservaçãoDdWaitForVerticalBlank nunca deve entrar em um loop de sondagem se o estado de energia do monitor causar o travamento do driver. Por exemplo, durante uma desligar o monitor, um aplicativo pode chamar WaitForVerticalBlank. O runtime do DirectDraw chama o ponto de entrada DdWaitForVerticalBlank do driver de vídeo, que aguarda a alteração do status. Se o monitor estiver desligado, esse valor nunca será alterado, a menos que o gravador de driver se prepare para esse cenário. Uma solução é incluir um tempo limite no loop de sondagem enquanto aguarda um espaço em branco vertical. O driver Permedia2 de exemplo é simplesmente definido para não sondar se o monitor estiver desligado.

Também há um problema com os DCTs (Testes de Compatibilidade de Exibição) do WHQL. Um dos DCTs para gerenciamento de energia alimenta o monitor e sonda o status vertical em branco, esperando que ele mude. Se o driver sempre relatar o mesmo status em branco vertical quando o monitor estiver desligado, o aplicativo de teste ficará travado aguardando a alteração do resultado. Isso foi corrigido no driver de exemplo Permedia2 retornando resultados alternados enquanto o monitor é desligado. Ou seja, na primeira vez que o ponto de entrada DdWaitForVerticalBlank do driver é chamado com o sinalizador DDWAIT_I_TESTVB (quando o monitor é desligado), ele retorna FALSE, na próxima vez que retornar TRUE, da próxima vez FALSE etc.

 

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho ddrawint.h (inclua Winddi.h)

Confira também

DD_WAITFORVERTICALBLANKDATA