Condividi tramite


Metodo IDXGIDevice2::EnqueueSetEvent (dxgi1_2.h)

Scarica tutti i comandi di rendering in sospeso e imposta l'oggetto evento specificato sullo stato segnalato dopo il completamento di tutti i comandi di rendering inviati in precedenza.

Sintassi

HRESULT EnqueueSetEvent(
  [in] HANDLE hEvent
);

Parametri

[in] hEvent

Handle per l'oggetto evento. La funzione CreateEvent o OpenEvent restituisce questo handle. Sono supportati tutti i tipi di oggetti evento (reimpostazione manuale, reimpostazione automatica e così via).

L'handle deve avere il diritto di accesso EVENT_MODIFY_STATE. Per altre informazioni sui diritti di accesso, vedere Synchronization Object Security and Access Rights.For more information about access rights, see Synchronization Object Security and Access Rights.

Valore restituito

Restituisce S_OK in caso di esito positivo; in caso contrario, restituisce uno dei valori seguenti:

  • E_OUTOFMEMORY se è disponibile memoria insufficiente per completare l'operazione.
  • E_INVALIDARG se il parametro è stato convalidato e determinato che non è corretto.
Aggiornamento della piattaforma per Windows 7: In Windows 7 o Windows Server 2008 R2 con l'aggiornamento della piattaforma per Windows 7 installato, EnqueueSetEvent ha esito negativo con E_NOTIMPL. Per altre info sull'aggiornamento della piattaforma per Windows 7, vedi Platform Update per Windows 7.

Commenti

EnqueueSetEvent chiama la funzione SetEvent sull'oggetto evento dopo che tutti i comandi di rendering inviati in precedenza vengono completati o il dispositivo viene rimosso.

Dopo che un'applicazione chiama EnqueueSetEvent, può chiamare immediatamente la funzione WaitForSingleObject per rimanere in sospensione fino al completamento dei comandi di rendering.

Non è possibile usare EnqueueSetEvent per determinare il completamento del lavoro associato alla presentazione (IDXGISwapChain::P resent); È invece consigliabile usare IDXGISwapChain::GetFrameStatistics.

Esempio

Il codice di esempio seguente mostra come usare 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);
}

Requisiti

Requisito Valore
Client minimo supportato Windows 8 e aggiornamento della piattaforma per Windows 7 [app desktop | App UWP]
Server minimo supportato Windows Server 2012 e aggiornamento della piattaforma per Windows Server 2008 R2 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione dxgi1_2.h
Libreria Dxgi.lib

Vedi anche

IDXGIDevice2