IDXGIDevice2::EnqueueSetEvent-Methode (dxgi1_2.h)

Leert alle ausstehenden Renderingbefehle und legt das angegebene Ereignisobjekt auf den Signalzustand fest, nachdem alle zuvor übermittelten Renderingbefehle abgeschlossen sind.

Syntax

HRESULT EnqueueSetEvent(
  [in] HANDLE hEvent
);

Parameter

[in] hEvent

Ein Handle für das Ereignisobjekt. Die CreateEvent- oder OpenEvent-Funktion gibt dieses Handle zurück. Alle Arten von Ereignisobjekten (manuelles Zurücksetzen, automatisches Zurücksetzen usw.) werden unterstützt.

Das Handle muss über das zugriffsrecht EVENT_MODIFY_STATE verfügen. Weitere Informationen zu Zugriffsrechten finden Sie unter Synchronisierungsobjektsicherheit und Zugriffsrechte.

Rückgabewert

Gibt bei erfolgreicher Ausführung S_OK zurück. Gibt andernfalls einen der folgenden Werte zurück:

  • E_OUTOFMEMORY , wenn nicht genügend Arbeitsspeicher zum Abschließen des Vorgangs verfügbar ist.
  • E_INVALIDARG , ob der Parameter überprüft und als falsch ermittelt wurde.
Plattformupdate für Windows 7: Unter Windows 7 oder Windows Server 2008 R2 mit installiertem Plattformupdate für Windows 7 schlägt EnqueueSetEvent mit E_NOTIMPL fehl. Weitere Informationen zum Plattformupdate für Windows 7 finden Sie unter Plattformupdate für Windows 7.

Hinweise

EnqueueSetEvent ruft die SetEvent-Funktion für das Ereignisobjekt auf, nachdem alle zuvor übermittelten Renderingbefehle abgeschlossen oder das Gerät entfernt wurde.

Nachdem eine Anwendung EnqueueSetEvent aufgerufen hat, kann sie sofort die WaitForSingleObject-Funktion aufrufen, um sich in den Ruhezustand zu versetzen, bis das Rendern der Befehle abgeschlossen ist.

Sie können EnqueueSetEvent nicht verwenden, um den Arbeitsabschluss zu bestimmen, der der Präsentation zugeordnet ist (IDXGISwapChain::P resent); Stattdessen wird empfohlen, IDXGISwapChain::GetFrameStatistics zu verwenden.

Beispiele

Der folgende Beispielcode zeigt die Verwendung von 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);
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 8 und Plattformupdate für Windows 7 [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2012 und Plattformupdate für Windows Server 2008 R2 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile dxgi1_2.h
Bibliothek Dxgi.lib

Weitere Informationen

IDXGIDevice2