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.
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 |