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 物件 (IDXCoreAdapterIDXCoreAdapterList) 您訂閱的通知。

notificationType

類型: DXCoreNotificationType

您要註冊的通知類型。 請參閱 DXCoreNotificationType 中的表格,以取得哪些類型對哪些物件有效的資訊。

callbackFunction [in]

類型: PFN_DXCORE_NOTIFICATION_CALLBACK

應用程式) 實作的回呼函式指標 (,這是由 DXCore 物件針對通知事件呼叫的指標。 如需函式的簽章,請參閱 PFN_DXCORE_NOTIFICATION_CALLBACK

callbackCoNtext [in]

類型: void*

包含內容資訊之物件的選擇性指標。 引發通知時,此物件會傳遞至您的回呼函式。

eventCookie [out]

類型: uint32_t*

uint32_t值的指標。 如果成功,函式會取值指標,並將值設定為代表此註冊的非零 Cookie 值。 呼叫 IDXCoreAdapterFactory::UnregisterEventNotification,使用此 Cookie 值從通知取消註冊。 請參閱備註

如果失敗,函式會取值指標,並將值設定為零,這表示不正確 Cookie 值。

傳回

類型: HRESULT

如果函式成功,它會 傳回S_OK。 否則,它會傳回HRESULTerror程式碼

傳回值 描述
DXGI_ERROR_INVALID_CALL 作業系統不支援 notificationType (OS) 。
E_INVALIDARG nullptr 已針對 dxCoreObject提供,或提供無效 的 notificationTypedxCoreObject 組合時。
E_POINTER nullptr 已針對 callbackFunctioneventCookie提供。

備註

您可以使用 RegisterEventNotification 來註冊 IDXCoreAdapterListIDXCoreAdapter 介面所引發的事件。 支援這些通知類型。

DXCoreNotificationType 支援的 dxCoreObject 備註
AdapterListStale IDXCoreAdapterList 指出符合篩選準則的配接器清單已變更。 如果在註冊時配接器清單過時,則會立即呼叫您的回呼。 每個註冊最多一次都會發生此回呼。
AdapterNoLongerValid IDXCoreAdapter 表示配接器已不再有效。 如果在註冊時配接器無效,則會立即呼叫您的回呼。
AdapterBudgetChange IDXCoreAdapter 指出發生記憶體預算事件,而且您應該使用DXCoreAdapterState::AdapterMemoryBudget) 呼叫IDXCoreAdapter::QueryState (,以評估目前的記憶體預算狀態。 註冊時,一律會發生初始回呼,讓您查詢初始狀態。
AdapterHardwareContentProtectionTeardown IDXCoreAdapter 指出您應該重新評估目前的加密會話狀態;例如,藉由呼叫 ID3D11VideoCoNtext1::CheckCryptoSessionStatus 來判斷特定 ID3D11CryptoSession 介面的硬體終止影響。 註冊時,一律會發生初始回呼,讓您查詢初始狀態。

當偵測到的事件發生時,DXCore 會以非同步方式在背景執行緒上呼叫您在 callbackFunction 中提供的函式。 無法保證回呼的排序或計時—多個回呼可能會依任何順序或甚至同時發生。 您甚至可以在 RegisterEventNotification 完成之前叫用回呼。 在此情況下,DXCore 會保證在呼叫回呼之前已設定 eventCookie 。 特定註冊的多個回呼會依序序列化。

回呼可能會隨時發生,直到您呼叫 UnregisterEventNotification,且完成為止。 回呼發生在自己的執行緒上,而且您可以在這些執行緒上呼叫 DXCore API,包括 UnregisterEventNotification。 不過,您不得釋放此執行緒上 dxCoreObject 的最後一個參考。

重要

在您終結傳遞至RegisterEventNotificationdxCoreObject引數所代表的 DXCore 物件之前,您必須呼叫IDXCoreAdapterFactory::UnregisterEventNotification,從通知取消註冊該物件。 如果您未這麼做,則會在偵測到情況時引發嚴重例外狀況。

另請參閱

IDXCoreAdapterIDXCoreAdapterListIDXCoreAdapterFactory::UnregisterEventNotificationDXCore 參考使用 DXCore 列舉配接