IDXCoreAdapterFactory :: RegisterEventNotification, méthode

S’inscrit pour recevoir des notifications de conditions spécifiques à partir d’un adaptateur DXCore ou d’une liste d’adaptateurs. Pour obtenir des conseils de programmation et des exemples de code, consultez utilisation de dxcore pour énumérer des adaptateurs.

Syntaxe

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

Paramètres

dxCoreObject [in]

Type : IUnknown*

Objet DXCore (IDXCoreAdapter ou IDXCoreAdapterList) dont vous êtes abonné aux notifications.

notificationType

Type : DXCoreNotificationType

Type de notification pour laquelle vous effectuez l’inscription. Consultez le tableau dans DXCoreNotificationType pour plus d’informations sur les types qui sont valides avec les genres d’objets.

callbackFunction [in]

Type : PFN_DXCORE_NOTIFICATION_CALLBACK

Pointeur vers une fonction de rappel (implémentée par votre application), qui est appelée par l’objet DXCore pour les événements de notification. Pour obtenir la signature de la fonction, consultez PFN_DXCORE_NOTIFICATION_CALLBACK.

callbackContext [in]

Type : void *

Pointeur facultatif vers un objet contenant des informations de contexte. Cet objet est passé à votre fonction de rappel lorsque la notification est déclenchée.

eventCookie [out]

Type : uint32_t *

Pointeur vers une valeur uint32_t . En cas de réussite, la fonction déréférence le pointeur et définit la valeur sur une valeur de cookie différente de zéro représentant cette inscription. Utilisez cette valeur de cookie pour annuler l’inscription de la notification en appelant IDXCoreAdapterFactory :: UnregisterEventNotification. Consultez la section Notes.

En cas d’échec, la fonction déréférence le pointeur et définit la valeur sur zéro, ce qui représente une valeur de cookie non valide.

Retours

Type : HRESULT

Si la fonction est réussie, elle retourne S_OK. Sinon, elle retourne un code d’erreurHRESULT.

Valeur de retour Description
DXGI_ERROR_INVALID_CALL NotificationType n’est pas pris en charge par le système d’exploitation (OS).
E_INVALIDARG nullptr a été fourni pour dxCoreObject ou si une combinaison NotificationType et dxCoreObject non valide a été fournie.
E_POINTER nullptr a été fourni pour callbackFunction ou eventCookie.

Notes

Vous utilisez RegisterEventNotification pour vous inscrire aux événements déclenchés par les interfaces IDXCoreAdapterList et IDXCoreAdapter . Ces types de notifications sont pris en charge.

DXCoreNotificationType DxCoreObject pris en charge Notes
AdapterListStale IDXCoreAdapterList Indique que la liste des adaptateurs répondant à vos critères de filtre a changé. Si la liste des adaptateurs est périmée au moment de l’inscription, votre rappel est immédiatement appelé. Ce rappel se produit au plus une fois par inscription.
AdapterNoLongerValid IDXCoreAdapter Indique que l’adaptateur n’est plus valide. Si l’adaptateur n’est pas valide au moment de l’inscription, votre rappel est immédiatement appelé.
AdapterBudgetChange IDXCoreAdapter Indique qu’un événement de budgétisation de mémoire s’est produit et que vous devez appeler IDXCoreAdapter :: QueryState (avec DXCoreAdapterState :: AdapterMemoryBudget) pour évaluer l’état actuel du budget de la mémoire. Lors de l’inscription, un rappel initial se produira toujours pour vous permettre d’interroger l’état initial.
AdapterHardwareContentProtectionTeardown IDXCoreAdapter Indique que vous devez réévaluer l’état actuel de la session de chiffrement. par exemple, en appelant ID3D11VideoContext1 :: CheckCryptoSessionStatus pour déterminer l’impact de la démontage du matériel pour une interface ID3D11CryptoSession spécifique. Lors de l’inscription, un rappel initial se produira toujours pour vous permettre d’interroger l’état initial.

Un appel à la fonction que vous fournissez dans callbackFunction est effectué de façon asynchrone sur un thread d’arrière-plan par dxcore lorsque l’événement détecté se produit. Aucune garantie n’est établie en ce qui concerne le classement ou le minutage des rappels — . plusieurs rappels peuvent se produire dans n’importe quel ordre, voire simultanément. Il est même possible d’appeler votre rappel avant la fin de RegisterEventNotification . Dans ce cas, DXCore garantit que votre eventCookie est défini avant l’appel de votre rappel. Plusieurs rappels pour une inscription spécifique sont sérialisés dans l’ordre.

Les rappels peuvent se produire à tout moment jusqu’à ce que vous appeliez UnregisterEventNotificationet qu’il se termine. Les rappels se produisent sur leurs propres threads, et vous pouvez effectuer des appels dans l’API DXCore sur ces threads, y compris UnregisterEventNotification. Toutefois, vous ne devez pas libérer la dernière référence à dxCoreObject sur ce thread.

Important

Avant de détruire l’objet DXCore représenté par l’argument dxCoreObject passé à RegisterEventNotification, vous devez utiliser la valeur cookie pour annuler l’inscription de cet objet dans les notifications en appelant IDXCoreAdapterFactory :: UnregisterEventNotification. Si vous ne le faites pas, une exception irrécupérable est générée lorsque la situation est détectée.

Voir aussi

IDXCoreAdapter, IDXCoreAdapterList, IDXCoreAdapterFactory :: UnregisterEventNotification, DXCore Reference, à l’aide de dxcore pour énumérer les adaptateurs