Método IDXGIDevice2::EnqueueSetEvent (dxgi1_2.h)
Libera todos os comandos de renderização pendentes e define o objeto de evento especificado para o estado sinalizado após a conclusão de todos os comandos de renderização enviados anteriormente.
Sintaxe
HRESULT EnqueueSetEvent(
[in] HANDLE hEvent
);
Parâmetros
[in] hEvent
Um identificador para o objeto de evento. A função CreateEvent ou OpenEvent retorna esse identificador. Todos os tipos de objetos de evento (redefinição manual, redefinição automática e assim por diante) têm suporte.
O identificador deve ter o direito de acesso EVENT_MODIFY_STATE. Para obter mais informações sobre direitos de acesso, consulte Segurança do objeto de sincronização e direitos de acesso.
Retornar valor
Retorna S_OK se tiver êxito; caso contrário, retorna um dos seguintes valores:
- E_OUTOFMEMORY se a memória insuficiente estiver disponível para concluir a operação.
- E_INVALIDARG se o parâmetro foi validado e determinado como incorreto.
Comentários
EnqueueSetEvent chama a função SetEvent no objeto de evento depois que todos os comandos de renderização enviados anteriormente são concluídos ou o dispositivo é removido.
Depois que um aplicativo chama EnqueueSetEvent, ele pode chamar imediatamente a função WaitForSingleObject para se colocar em suspensão até que os comandos de renderização sejam concluídos.
Você não pode usar EnqueueSetEvent para determinar a conclusão do trabalho associada à apresentação (IDXGISwapChain::P resent); Em vez disso, recomendamos que você use IDXGISwapChain::GetFrameStatistics.
Exemplos
O código de exemplo a seguir mostra como usar EnqueueSetEvent.
void BlockingFinish( IDXGIDevice2* pDevice )
{
// Create a manual-reset event object.
hEvent = CreateEvent(
NULL, // default security attributes
TRUE, // manual-reset event
FALSE, // initial state is nonsignaled
FALSE
);
if (hEvent == NULL)
{
printf("CreateEvent failed (%d)\n", GetLastError());
return;
}
pDevice->EnqueueSetEvent(hEvent);
DWORD dwWaitResult = WaitForSingleObject(
hEvent, // event handle
INFINITE); // indefinite wait
switch (dwWaitResult)
{
// Event object was signaled
case WAIT_OBJECT_0:
// Commands completed
break;
// An error occurred
default:
printf("Wait error (%d)\n", GetLastError());
return 0;
}
CloseHandle(hEvent);
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 e Atualização de Plataforma para Windows 7 [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2012 e Atualização de Plataforma para Windows Server 2008 R2 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | dxgi1_2.h |
Biblioteca | Dxgi.lib |