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