Share via


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.
Atualização de plataforma para Windows 7: No Windows 7 ou Windows Server 2008 R2 com a Atualização de Plataforma para Windows 7 instalada, EnqueueSetEvent falha com E_NOTIMPL. Para obter mais informações sobre a Atualização de Plataforma para Windows 7, consulte Platform Update para Windows 7.

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

Confira também

IDXGIDevice2