Initialisation de la communication avec le pilote d’affichage User-Mode Direct3D
Pour initialiser la communication avec la dll de pilote d’affichage en mode utilisateur Microsoft Direct3D version 11 DDI, le runtime Direct3D charge d’abord la DLL. Le runtime Direct3D appelle ensuite la fonction OpenAdapter du pilote d’affichage en mode utilisateur via la table d’exportation de la DLL pour ouvrir un instance de la carte graphique. La fonction OpenAdapter est la seule fonction exportée de la DLL.
Dans l’appel à la fonction OpenAdapter du pilote, le runtime fournit la fonction de rappel de l’adaptateur pfnQueryAdapterInfoCb dans le membre pAdapterCallbacks de la structure D3DDDIARG_OPENADAPTER . Le runtime fournit également sa version dans les membres Interface et Version de D3DDDIARG_OPENADAPTER. Le pilote d’affichage en mode utilisateur doit vérifier qu’il peut utiliser cette version du runtime. Le pilote d’affichage en mode utilisateur retourne un tableau de ses fonctions spécifiques à l’adaptateur dans le membre pAdapterFuncs de D3DDDIARG_OPENADAPTER.
Le pilote d’affichage en mode utilisateur doit appeler la fonction de rappel de l’adaptateur pfnQueryAdapterInfoCb pour rechercher les fonctionnalités matérielles graphiques du pilote miniport d’affichage.
Le runtime appelle la fonction CreateDevice du pilote d’affichage en mode utilisateur (l’une des fonctions spécifiques à l’adaptateur du pilote) pour créer un périphérique d’affichage pour gérer une collection d’état de rendu et terminer l’initialisation. Une fois l’initialisation terminée, le runtime Direct3D peut appeler les fonctions fournies par le pilote d’affichage, et le pilote d’affichage en mode utilisateur peut appeler les fonctions fournies par le runtime.
La fonction CreateDevice du pilote d’affichage en mode utilisateur est appelée avec une structure D3DDDIARG_CREATEDEVICE dont les membres sont configurés de la manière suivante pour initialiser l’interface du pilote d’affichage en mode utilisateur :
Le runtime définit Interface sur la version de l’interface requise par le runtime à partir du pilote d’affichage en mode utilisateur.
Le runtime définit Version sur un nombre que le pilote peut utiliser pour identifier le moment où le runtime a été généré. Par exemple, le pilote peut utiliser le numéro de version pour faire la différence entre un runtime publié avec Windows Vista et un runtime publié avec un Service Pack ultérieur, qui peut contenir un correctif dont le pilote a besoin.
Le runtime définit hDevice pour spécifier le handle que le pilote doit utiliser lorsque le pilote rappelle le runtime. Le pilote génère un handle unique et le transmet au runtime dans hDevice. Le runtime doit utiliser le handle hDevice retourné dans les appels de pilotes suivants.
Le runtime fournit une table de ses fonctions de rappel spécifiques à l’appareil dans la structure D3DDDI_DEVICECALLBACKS vers laquelle pCallbacks pointe. Le pilote d’affichage en mode utilisateur appelle les fonctions de rappel fournies par le runtime pour accéder aux services en mode noyau dans le pilote miniport d’affichage.
Le pilote d’affichage en mode utilisateur retourne un tableau de ses fonctions spécifiques au périphérique dans la structure D3DDDI_DEVICEFUNCS vers laquelle pointe pDeviceFuncs .
Notes
Le nombre de périphériques d’affichage (contextes graphiques) pouvant exister simultanément est limité uniquement par la mémoire système disponible.