Initialisation de la communication avec direct3D version 10 DDI
Pour initialiser la communication avec la DLL du pilote d’affichage en mode utilisateur version 10 DDI, le runtime Direct3D version 10 charge d’abord la DLL si la DLL n’est pas encore chargée. Le runtime Direct3D appelle ensuite la fonction OpenAdapter10 du pilote d’affichage en mode utilisateur via la table d’exportation de la DLL pour ouvrir une instance de la carte graphique. La fonction OpenAdapter10 est la seule fonction Direct3D 10 exportée de la DLL.
Dans l’appel à la fonction OpenAdapter10 du pilote, le runtime fournit la fonction de rappel de l’adaptateur pfnQueryAdapterInfoCb dans le membre pAdapterCallbacks de la structure D3D10DDIARG_OPENADAPTER . Le runtime fournit également sa version dans les membres Interface et Version de D3D10DDIARG_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 ne doit pas échouer les versions plus récentes du runtime, car les versions plus récentes du runtime peuvent utiliser des versions DDI précédentes et peuvent donc communiquer correctement avec les pilotes qui implémentent ces versions DDI précédentes. Le pilote d’affichage en mode utilisateur retourne une table de ses fonctions spécifiques à l’adaptateur dans le membre pAdapterFuncs de D3D10DDIARG_OPENADAPTER.
Le pilote d’affichage en mode utilisateur doit appeler la fonction de rappel de l’adaptateur pfnQueryAdapterInfoCb pour interroger les fonctionnalités matérielles graphiques du pilote miniport d’affichage.
Le runtime appelle la fonction CreateDevice (D3D10) du pilote d’affichage en mode utilisateur (une des fonctions propres à 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 version 10 peut appeler les fonctions Direct3D version 10 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(D3D10) du pilote d’affichage en mode utilisateur est appelée avec une structure D3D10DDIARG_CREATEDEVICE dont les membres sont configurés de la manière suivante pour initialiser la version 10 DDI 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 quand 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 suivant, qui peut contenir un correctif requis par le pilote.
Le runtime définit hRTDevice pour spécifier le handle que le pilote doit utiliser lorsque le pilote rappelle le runtime.
Le runtime définit hDrvDevice pour spécifier le handle que le runtime utilise 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 pKTCallbacks 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 d’affichage miniport.
Le pilote d’affichage en mode utilisateur retourne une table de ses fonctions spécifiques à l’appareil dans la structure D3D10DDI_DEVICEFUNCS vers laquelle pDeviceFuncs pointe.
Le runtime fournit une structure DXGI_DDI_BASE_ARGS vers laquelle DXGIBaseDDI pointe. Le runtime et le pilote d’affichage en mode utilisateur fournissent leur infrastructure graphique DirectX dDI à cette structure.
Le runtime définit hRTCoreLayer pour spécifier le handle que le pilote doit utiliser lorsque le pilote revient dans le runtime pour accéder à la fonctionnalité principale de Direct3D 10 (autrement dit, dans les appels aux fonctions spécifiées par le membre pUMCallbacks ).
Le runtime fournit une table de ses fonctions de rappel principales dans la structure D3D10DDI_CORELAYER_DEVICECALLBACKS vers laquelle pUMCallbacks pointe. Le pilote d’affichage en mode utilisateur appelle les fonctions de rappel principales fournies par le runtime à l’état d’actualisation.
Note Le nombre de périphériques d’affichage (contextes graphiques) pouvant exister simultanément est limité uniquement par la mémoire système disponible.