IDXGIDevice2 ::EnqueueSetEvent, méthode (dxgi1_2.h)
Vide toutes les commandes de rendu en attente et définit l’objet d’événement spécifié à l’état signalé une fois toutes les commandes de rendu envoyées précédemment terminées.
Syntaxe
HRESULT EnqueueSetEvent(
[in] HANDLE hEvent
);
Paramètres
[in] hEvent
Handle de l’objet d’événement. La fonction CreateEvent ou OpenEvent retourne ce handle. Tous les types d’objets d’événement (réinitialisation manuelle, réinitialisation automatique, etc.) sont pris en charge.
Le handle doit avoir le droit d’accès EVENT_MODIFY_STATE. Pour plus d’informations sur les droits d’accès, consultez Synchronization Object Security and Access Rights.
Valeur retournée
Retourne S_OK en cas de réussite ; sinon, retourne l’une des valeurs suivantes :
- E_OUTOFMEMORY si la mémoire disponible est insuffisante pour terminer l’opération.
- E_INVALIDARG si le paramètre a été validé et déterminé comme incorrect.
Remarques
EnqueueSetEvent appelle la fonction SetEvent sur l’objet d’événement une fois que toutes les commandes de rendu précédemment envoyées sont terminées ou que l’appareil est supprimé.
Une fois qu’une application a appelé EnqueueSetEvent, elle peut immédiatement appeler la fonction WaitForSingleObject pour se mettre en veille jusqu’à ce que les commandes de rendu se terminent.
Vous ne pouvez pas utiliser EnqueueSetEvent pour déterminer l’achèvement du travail associé à la présentation (IDXGISwapChain ::P resent) ; à la place, nous vous recommandons d’utiliser IDXGISwapChain ::GetFrameStatistics.
Exemples
L’exemple de code suivant montre comment utiliser 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);
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 8 et mise à jour de plateforme pour Windows 7 [applications de bureau | Applications UWP] |
Serveur minimal pris en charge | Windows Server 2012 et mise à jour de plateforme pour Windows Server 2008 R2 [applications de bureau | Applications UWP] |
Plateforme cible | Windows |
En-tête | dxgi1_2.h |
Bibliothèque | Dxgi.lib |