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 7용 Windows 8 및 플랫폼 업데이트 [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2008 R2용 Windows Server 2012 및 플랫폼 업데이트 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | dxgi1_2.h |
라이브러리 | Dxgi.lib |