MÉTHODE IDXCoreAdapterFactory::RegisterEventNotification
S’inscrit pour recevoir des notifications de conditions spécifiques à partir d’un adaptateur ou d’une liste d’adaptateurs DXCore. Pour obtenir des conseils de programmation et des exemples de code, consultez Utilisation de DXCore pour énumérer les 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 vous abonnez aux notifications.
notificationType
Type : DXCoreNotificationType
Type de notification pour laquelle vous vous inscrivez. Consultez le tableau dans DXCoreNotificationType pour plus d’informations sur les types valides avec les types 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 . Si elle réussit, 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 Remarques.
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 réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreurHRESULT.
Valeur retournée | Description |
---|---|
DXGI_ERROR_INVALID_CALL | notificationType n’est pas pris en charge par le système d’exploitation. |
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 notification 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 obsolète 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 la mémoire s’est produit et que vous devez appeler IDXCoreAdapter::QueryState (avec DXCoreAdapterState::AdapterMemoryBudget) pour évaluer l’état budgétaire de la mémoire actuel. Lors de l’inscription, un rappel initial se produit toujours pour vous permettre d’interroger l’état initial. |
AdapterHardwareContentProtectionTeardown | IDXCoreAdapter | Indique que vous devez réévaluer la session de chiffrement actuelle status, par exemple, en appelant ID3D11VideoContext1::CheckCryptoSessionStatus pour déterminer l’impact de la destruction du matériel pour une interface ID3D11CryptoSession spécifique. Lors de l’inscription, un rappel initial se produit toujours pour vous permettre d’interroger l’état initial. |
Un appel à la fonction que vous fournissez dans callbackFunction est effectué de manière asynchrone sur un thread d’arrière-plan par DXCore lorsque l’événement détecté se produit. Aucune garantie n’est apportée quant à l’ordre ou au minutage des rappels : plusieurs rappels peuvent se produire dans n’importe quel ordre, voire simultanément. Il est même possible que votre rappel soit appelé 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.
Des rappels peuvent se produire à tout moment jusqu’à ce que vous appeliez UnregisterEventNotification et que l’opération se termine. Les rappels se produisent sur leurs propres threads, et vous pouvez effectuer des appels à l’API DXCore sur ces threads, y compris UnregisterEventNotification. Toutefois, vous ne devez pas publier 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 de cookie pour désinscrire cet objet des notifications en appelant IDXCoreAdapterFactory::UnregisterEventNotification. Si vous ne le faites pas, une exception irrécupérable est levée lorsque la situation est détectée.
Voir aussi
IDXCoreAdapter, IDXCoreAdapterList, IDXCoreAdapterFactory::UnregisterEventNotification, Référence DXCore, Utilisation de DXCore pour énumérer les adaptateurs
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour