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 의 표를 참조하세요.
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 | nullptr dxCoreObject에 대해 제공되었거나 잘못된 notificationType 및 dxCoreObject 조합이 제공된 경우 입니다. |
E_POINTER | nullptr 콜백Function 또는 eventCookie에 대해 제공되었습니다. |
설명
RegisterEventNotification을 사용하여 IDXCoreAdapterList 및 IDXCoreAdapter 인터페이스에서 발생한 이벤트를 등록합니다. 이러한 알림 유형이 지원됩니다.
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를 사용하여 어댑터 열거
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기