Partager via


PFND3DDDI_SETASYNCCALLBACKSCB fonction de rappel (d3dumddi.h)

La fonction pfnSetAsyncCallbacksCb avertit le runtime Microsoft Direct3D si le runtime démarre ou cesse de recevoir des appels aux fonctions de rappel du runtime à partir d’un thread de travail.

Syntaxe

PFND3DDDI_SETASYNCCALLBACKSCB Pfnd3dddiSetasynccallbackscb;

HRESULT Pfnd3dddiSetasynccallbackscb(
  HANDLE hDevice,
  BOOL Enable
)
{...}

Paramètres

hDevice

Handle pour le périphérique d’affichage (contexte graphique).

Enable

Valeur booléenne qui spécifie si le runtime démarre ou cesse de recevoir des appels aux fonctions de rappel du runtime à partir d’un thread de travail. TRUE indique que le runtime va commencer à recevoir des appels à ses fonctions de rappel à partir d’un thread de travail ; FALSE indique que le runtime cessera de recevoir des appels à ses fonctions de rappel à partir d’un thread de travail.

Valeur retournée

pfnSetAsyncCallbacksCb retourne l’une des valeurs suivantes :

Code de retour Description
S_OK Le runtime Direct3D a été correctement averti.
E_INVALIDARG Les paramètres ont été validés et déterminés comme incorrects.

Cette fonction peut également retourner d’autres valeurs HRESULT.

Remarques

Si un pilote d’affichage en mode utilisateur implémente ses propres optimisations à plusieurs processeurs (autrement dit, le pilote crée un thread de travail et traite les commandes dans ce thread), le pilote doit appeler pfnSetAsyncCallbacksCb pour informer le runtime Direct3D si le runtime démarre ou cesse de recevoir des appels aux fonctions de rappel du runtime à partir du thread de travail. En outre, ces pilotes ne doivent pas implémenter les fonctions LockAsync, UnlockAsync et Rename . Cela garantit que le runtime ne tente pas d’utiliser ses propres optimisations à plusieurs processeurs.

Le pilote d’affichage en mode utilisateur peut appeler pfnSetAsyncCallbacksCb uniquement sur le thread d’application main (autrement dit, le thread qui a appelé le pilote). Le thread worker du pilote ne peut pas appeler pfnSetAsyncCallbacksCb. À tout moment, un seul thread qui fait référence à un périphérique de rendu particulier peut s’exécuter dans l’une des fonctions de rappel du runtime.

Avant que le pilote d’affichage en mode utilisateur appelle l’une des fonctions de rappel du runtime sur un thread autre que le thread d’application main, le pilote doit passer TRUE au paramètre Enable dans un appel à pfnSetAsyncCallbacksCb. Avant que le pilote d’affichage en mode utilisateur appelle l’une des fonctions de rappel du runtime sur le thread d’application main, le pilote doit passer FALSE au paramètre Enable dans un appel à pfnSetAsyncCallbacksCb.

Dans l’implémentation de Flush pour chaque périphérique de rendu, le pilote appelle pfnSetAsyncCallbacksCb et transmet FALSE au paramètre Enable .

Lorsque le pilote passe TRUE au paramètre Enable dans un appel à pfnSetAsyncCallbacksCb, le runtime se place dans un état où il ne répond pas immédiatement aux situations de perte d’appareil dans ses fonctions de rappel. Au lieu de cela, lorsque le runtime détecte une perte d’appareil dans une fonction de rappel dans cet état, il définit un bit qui indique que l’événement s’est produit. Lorsque le pilote transmet FALSE au paramètre Enable dans un appel à pfnSetAsyncCallbacksCb, le runtime vérifie le bit pour déterminer si un appareil perdu s’est produit. Si le bit est défini, le runtime effectue sa gestion typique des appareils perdus. Après ce point, le pilote ne reçoit plus la plupart des appels à ses fonctions à partir du runtime.

Seules les versions DirectX 9 et DirectX 9L du runtime prennent en charge pfnSetAsyncCallbacksCb. DirectX 10 et versions ultérieures du runtime définissent le membre pfnSetAsyncCallbacksCb de la structure D3DDDI_DEVICECALLBACKS sur NULL lorsque le runtime appelle la fonction CreateDevice(D3D10) du pilote d’affichage en mode utilisateur pour créer un périphérique de rendu.

Note Les versions de DirectX antérieures à 9 ne prennent pas en charge les optimisations à plusieurs processeurs.
 
Les pilotes peuvent appeler les fonctions de rappel du runtime uniquement à partir d’un thread de travail si le runtime a précédemment défini le membre pfnSetAsyncCallbacksCb de D3DDDI_DEVICECALLBACKS sur non NULL dans un appel à la fonction CreateDevice du pilote.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows Vista et versions ultérieures des systèmes d’exploitation Windows.
Plateforme cible Desktop (Expérience utilisateur)
En-tête d3dumddi.h (inclure D3dumddi.h)

Voir aussi

CreateDevice

CreateDevice(D3D10)

D3DDDI_DEVICECALLBACKS

Purge

LockAsync

Renommer

UnlockAsync