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.
Mise à jour de plateforme pour Windows 7 : Sur Windows 7 ou Windows Server 2008 R2 avec la mise à jour de plateforme pour Windows 7 installée, EnqueueSetEvent échoue avec E_NOTIMPL. Pour plus d’informations sur la mise à jour de plateforme pour Windows 7, consultez Mise à jour de plateforme pour Windows 7.

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

Voir aussi

IDXGIDevice2