다음을 통해 공유


ID3D11Device4::RegisterDeviceRemovedEvent 메서드(d3d11_4.h)

"디바이스 제거됨" 이벤트를 등록하고 비동기 알림 메커니즘을 사용하여 어떤 이유로든 Direct3D 디바이스가 제거된 시기를 나타냅니다.

구문

HRESULT RegisterDeviceRemovedEvent(
  [in]  HANDLE hEvent,
  [out] DWORD  *pdwCookie
);

매개 변수

[in] hEvent

형식: HANDLE

"디바이스 제거됨" 이벤트에 대한 핸들입니다.

[out] pdwCookie

형식: DWORD*

UnregisterDeviceRemoved에서 이벤트를 등록 취소하는 데 사용할 수 있는 "디바이스 제거됨" 이벤트에 대한 정보에 대한 포인터입니다.

반환 값

형식: HRESULT

Direct3D 11 반환 코드를 참조하세요.

설명

Present의 HRESULT가 아닌 비동기 알림 메커니즘을 사용하여 어떤 이유로든 Direct3D 디바이스가 제거된 시기를 나타냅니다. 발생 알림을 받은 후 ID3D11Device::GetDeviceRemovedReason 을 사용하여 디바이스 제거 이유를 검색할 수 있습니다.

애플리케이션은 특정 디바이스에 Win32 이벤트 핸들을 등록 및 등록 취소합니다. 디바이스가 제거되면 해당 이벤트 핸들에 신호가 전송됩니다. 디바이스의 ID3D11Device::GetDeviceRemovedReason 메서드에 대한 설문 조사는 디바이스가 제거되었음을 나타냅니다.

ISignalableNotifier 또는 SetThreadpoolWait 는 UWP 앱에서 사용할 수 있습니다.

그래픽 디바이스가 손실되면 앱 또는 타이틀이 그래픽 이벤트를 받게 되므로 앱 또는 타이틀은 해당 그래픽 디바이스가 더 이상 유효하지 않으며 앱 또는 타이틀이 DirectX 디바이스를 다시 만드는 것이 안전하다는 것을 알 수 있습니다. 이 이벤트에 대한 응답으로 앱 또는 타이틀은 렌더링 디바이스를 다시 만들고 컴퍼지션 그래픽 디바이스 개체의 SetRenderingDevice 호출에 전달해야 합니다.

이 새 렌더링 디바이스를 설정한 후 컴퍼지션 그래픽 디바이스의 OnRenderingDeviceReplaced 이벤트가 발생한 후 앱 또는 타이틀이 모든 기존 표면의 콘텐츠를 다시 그려야 합니다.

이 메서드는 디바이스 손실에 대한 컴퍼지션을 지원합니다.

다시 만드는 것이 가장 이상적인 경우 이벤트는 신호를 받지 않습니다. 따라서 어댑터 서수로 반복하고 성공할 첫 번째 서수는 만드는 것이 좋습니다.

애플리케이션은 디바이스에 이벤트를 등록할 수 있습니다. 디바이스가 제거되면 애플리케이션에 신호가 전송됩니다.

디바이스가 이미 제거된 경우 RegisterDeviceRemovedEvent 에 대한 호출은 이벤트를 즉시 신호로 보냅니다. RegisterDeviceRemovedEvent에서 디바이스 제거 오류 코드가 반환되지 않습니다.

각 "디바이스 제거" 이벤트는 신호를 받지 않거나 한 번만 신호를 보냅니다. 이러한 이벤트는 디바이스를 파괴하는 동안 신호를 받지 않습니다. 이러한 이벤트는 소멸 중에 등록 취소됩니다.

RegisterDeviceRemovedEvent의 의미 체계는 IDXGIFactory2::RegisterOcclusionStatusEvent와 유사합니다.

요구 사항

요구 사항
대상 플랫폼 Windows
헤더 d3d11_4.h
라이브러리 D3d11.lib

추가 정보

ID3D11Device4

UnregisterDeviceRemoved