Метод IDXGIDevice2::EnqueueSetEvent (dxgi1_2.h)

Очищает все невыполненные команды отрисовки и присваивает указанному объекту события сигнальное состояние после завершения всех ранее отправленных команд отрисовки.

Синтаксис

HRESULT EnqueueSetEvent(
  [in] HANDLE hEvent
);

Параметры

[in] hEvent

Дескриптор объекта события. Функция CreateEvent или OpenEvent возвращает этот дескриптор. Поддерживаются все типы объектов событий (сброс вручную, автоматический сброс и т. д.).

Дескриптор должен иметь право доступа к EVENT_MODIFY_STATE. Дополнительные сведения о правах доступа см. в разделе Безопасность объектов синхронизации и права доступа.

Возвращаемое значение

В случае успешного выполнения возвращает S_OK . в противном случае возвращает одно из следующих значений:

  • E_OUTOFMEMORY , если для завершения операции недостаточно памяти.
  • E_INVALIDARG , если параметр был проверен и определен как неверный.
Обновление платформы для Windows 7: В Windows 7 или Windows Server 2008 R2 с установленным Обновлением платформы для Windows 7enqueueSetEvent завершается сбоем с E_NOTIMPL. Дополнительные сведения об Обновлении платформы для Windows 7 см. в разделе Обновление платформы для Windows 7.

Комментарии

EnqueueSetEvent вызывает функцию SetEvent для объекта события после завершения всех ранее отправленных команд отрисовки или удаления устройства.

После того как приложение вызывает EnqueueSetEvent, оно может немедленно вызвать функцию WaitForSingleObject , чтобы переключиться в спящий режим до завершения выполнения команд отрисовки.

Вы не можете использовать EnqueueSetEvent для определения завершения работы, связанной с презентацией (IDXGISwapChain::P resent); Вместо этого рекомендуется использовать IDXGISwapChain::GetFrameStatistics.

Примеры

В следующем примере кода показано, как использовать 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);
}

Требования

Требование Значение
Минимальная версия клиента Windows 8 и обновление платформы для Windows 7 [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2012 и обновление платформы для Windows Server 2008 R2 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header dxgi1_2.h
Библиотека Dxgi.lib

См. также раздел

IDXGIDevice2