Метод IDXGIDevice2::EnqueueSetEvent (dxgi1_2.h)
Очищает все невыполненные команды отрисовки и присваивает указанному объекту события сигнальное состояние после завершения всех ранее отправленных команд отрисовки.
Синтаксис
HRESULT EnqueueSetEvent(
[in] HANDLE hEvent
);
Параметры
[in] hEvent
Дескриптор объекта события. Функция CreateEvent или OpenEvent возвращает этот дескриптор. Поддерживаются все типы объектов событий (сброс вручную, автоматический сброс и т. д.).
Дескриптор должен иметь право доступа к EVENT_MODIFY_STATE. Дополнительные сведения о правах доступа см. в разделе Безопасность объектов синхронизации и права доступа.
Возвращаемое значение
В случае успешного выполнения возвращает S_OK . в противном случае возвращает одно из следующих значений:
- E_OUTOFMEMORY , если для завершения операции недостаточно памяти.
- E_INVALIDARG , если параметр был проверен и определен как неверный.
Комментарии
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 |