Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le pilote d’affichage en mode utilisateur n’est pas chargé simultanément dans plusieurs processus. La DLL du pilote d’affichage en mode utilisateur est chargée séparément dans l’espace d’adressage de chaque processus. Néanmoins, plusieurs threads peuvent s’exécuter simultanément dans le pilote d’affichage en mode utilisateur. Toutefois, chaque thread qui s’exécute dans le pilote d’affichage en mode utilisateur doit accéder à un autre périphérique d’affichage, qui est créé par un appel à la fonction CreateDevice du pilote d’affichage en mode utilisateur. Par exemple :
Une application qui crée deux appareils Microsoft Direct3D peut avoir deux threads qui accèdent à ces appareils indépendamment.
Une application peut utiliser, sur deux threads différents, un appareil Direct3D que le runtime Direct3D Microsoft DirectX 9.0 a créé avec un appareil Microsoft DirectDraw créé par le runtime DirectX 5.0.
Note Au moins deux threads qui utilisent le même périphérique d’affichage ne peuvent jamais s’exécuter simultanément dans le pilote d’affichage en mode utilisateur.
Comme le pilote de miniport d’affichage, le pilote d’affichage en mode utilisateur n’est pas nécessaire pour utiliser des structures de données globales, car les appareils Direct3D sont indépendants et l’état et les ressources de chaque appareil n’affectent pas les autres appareils. Si le pilote d’affichage en mode utilisateur doit gérer des structures de données globales inter-appareils (par exemple, pour un gestionnaire de tas de mémoire système personnalisé), il doit arbitrer l’accès à l’aide de ses propres mécanismes. Ces structures de données globales que le pilote gère sont fortement déconseillées. Étant donné que le runtime Direct3D ouvre une « vue » indépendante de la ressource partagée dans chaque périphérique d’affichage en mode utilisateur qui doit accéder à la ressource, les ressources interprocessos ou inter-appareils ne doivent pas être gérées différemment des ressources utilisées par un seul processus ou appareil. La durée de vie et d’autres gestions sont gérées par le sous-système du noyau graphique DirectX (Dxgkrnl.sys).
Sur les ordinateurs à plusieurs processeurs, le runtime Direct3D peut appeler un pilote d’affichage en mode utilisateur à partir d’un thread de travail au lieu du thread d’application main. Cette optimisation à plusieurs processeurs est transparente pour le pilote d’affichage en mode utilisateur. Lorsque le runtime utilise l’optimisation à plusieurs processeurs, il garantit toujours qu’un seul thread qui référence un périphérique particulier s’exécute dans le pilote à un moment donné.