IDXCoreAdapterFactory::RegisterEventNotification 메서드

DXCore 어댑터 또는 어댑터 목록에서 특정 조건에 대한 알림을 수신하도록 등록합니다. 프로그래밍 지침 및 코드 예제는 DXCore를 사용하여 어댑터 열거를 참조하세요.

구문

virtual HRESULT STDMETHODCALLTYPE RegisterEventNotification(
  _In_ IUnknown *dxCoreObject,
  DXCoreNotificationType notificationType,
  _In_ PFN_DXCORE_NOTIFICATION_CALLBACK callbackFunction,
  _In_opt_ void *callbackContext,
  _Out_ uint32_t *eventCookie) = 0;

매개 변수

dxCoreObject [in]

형식: IUnknown*

구독하는 알림을 포함하는 DXCore 개체(IDXCoreAdapter 또는 IDXCoreAdapterList)입니다.

notificationType

형식: DXCoreNotificationType

등록할 알림 유형입니다. 어떤 형식이 어떤 종류의 개체에 유효한지에 대한 자세한 내용은 DXCoreNotificationType 의 표를 참조하세요.

callbackFunction [in]

형식: PFN_DXCORE_NOTIFICATION_CALLBACK

알림 이벤트에 대해 DXCore 개체에서 호출하는 콜백 함수(애플리케이션에서 구현)에 대한 포인터입니다. 함수의 서명은 PFN_DXCORE_NOTIFICATION_CALLBACK 참조하세요.

callbackContext [in]

형식: void*

컨텍스트 정보를 포함하는 개체에 대한 선택적 포인터입니다. 이 개체는 알림이 발생할 때 콜백 함수에 전달됩니다.

eventCookie [out]

형식: uint32_t*

uint32_t 값에 대한 포인터입니다. 성공하면 함수는 포인터를 역참조하고 이 등록을 나타내는 0이 아닌 쿠키 값으로 값을 설정합니다. IDXCoreAdapterFactory::UnregisterEventNotification을 호출하여 알림에서 등록을 취소하려면 이 쿠키 값을 사용합니다. 설명을 참조하세요.

실패하면 함수는 포인터를 역참조하고 값을 0으로 설정합니다. 이 값은 잘못된 쿠키 값을 나타냅니다.

반환

형식: HRESULT

함수가 성공하면 S_OK를 반환합니다. 그렇지 않으면 HRESULT오류 코드를 반환합니다.

반환 값 설명
DXGI_ERROR_INVALID_CALL notificationType 은 OS(운영 체제)에서 지원되지 않습니다.
E_INVALIDARG nullptrdxCoreObject에 대해 제공되었거나 잘못된 notificationTypedxCoreObject 조합이 제공된 경우 입니다.
E_POINTER nullptr콜백Function 또는 eventCookie에 대해 제공되었습니다.

설명

RegisterEventNotification을 사용하여 IDXCoreAdapterListIDXCoreAdapter 인터페이스에서 발생한 이벤트를 등록합니다. 이러한 알림 유형이 지원됩니다.

DXCoreNotificationType 지원되는 dxCoreObject 참고
AdapterListStale IDXCoreAdapterList 필터 조건을 충족하는 어댑터 목록이 변경되었음을 나타냅니다. 등록 시 어댑터 목록이 부실하면 콜백이 즉시 호출됩니다. 이 콜백은 등록당 최대 한 번 발생합니다.
AdapterNoLongerValid IDXCoreAdapter 어댑터가 더 이상 유효하지 않음을 나타냅니다. 등록 시 어댑터가 유효하지 않으면 콜백이 즉시 호출됩니다.
AdapterBudgetChange IDXCoreAdapter 메모리 예산 이벤트가 발생했으며 IDXCoreAdapter::QueryState(DXCoreAdapterState::AdapterMemoryBudget 포함)를 호출하여 현재 메모리 예산 상태를 평가해야 했음을 나타냅니다. 등록 시 초기 상태를 쿼리할 수 있도록 항상 초기 콜백이 발생합니다.
AdapterHardwareContentProtectionTeardown IDXCoreAdapter 현재 암호화 세션 상태 다시 평가해야 했음을 나타냅니다. 예를 들어 ID3D11VideoContext1::CheckCryptoSessionStatus를 호출하여 특정 ID3D11CryptoSession 인터페이스에 대한 하드웨어 중단의 영향을 확인합니다. 등록 시 초기 상태를 쿼리할 수 있도록 항상 초기 콜백이 발생합니다.

callbackFunction에서 제공하는 함수에 대한 호출은 검색된 이벤트가 발생할 때 DXCore에 의해 백그라운드 스레드에서 비동기적으로 수행됩니다. 콜백의 순서 또는 타이밍에 대한 보장은 없습니다. 여러 콜백이 순서에 관계없이 또는 동시에 발생할 수 있습니다. RegisterEventNotification이 완료되기 전에 콜백을 호출할 수도 있습니다. 이 경우 DXCore는 콜백이 호출되기 전에 eventCookie 가 설정되도록 보장합니다. 특정 등록에 대한 여러 콜백이 순서대로 직렬화됩니다.

UnregisterEventNotification을 호출하고 완료할 때까지 언제든지 콜백이 발생할 수 있습니다. 콜백은 자체 스레드에서 발생하며 UnregisterEventNotification을 포함하여 해당 스레드에서 DXCore API를 호출할 수 있습니다. 그러나 이 스레드에서 dxCoreObject 에 대한 마지막 참조를 해제해서는 안 됩니다.

중요

RegisterEventNotification에 전달된 dxCoreObject 인수로 표시되는 DXCore 개체를 삭제하기 전에 IDXCoreAdapterFactory::UnregisterEventNotification을 호출하여 알림에서 해당 개체의 등록을 취소하려면 쿠키 값을 사용해야 합니다. 그렇게 하지 않으면 상황이 감지되면 치명적인 예외가 발생합니다.

추가 정보

IDXCoreAdapter, IDXCoreAdapterList, IDXCoreAdapterFactory::UnregisterEventNotification, DXCore 참조, DXCore를 사용하여 어댑터 열거