Partager via


Vue d’ensemble du pilote d’affichage indirect

Le modèle de pilote d’affichage indirect (IDD) fournit un modèle de pilote en mode utilisateur simple pour prendre en charge les moniteurs qui ne sont pas connectés aux sorties d’affichage GPU traditionnelles. Par exemple, un dongle connecté à un PC via USB qui a un moniteur standard (VGA, DVI, HDMI, DP, etc.) connecté à celui-ci nécessite un IDD.

Implémentation d’IDD

Un IDD est le pilote UMDF fourni par un tiers pour l’appareil. Un IDD est développé à l’aide des fonctionnalités exposées par iddCx (indirect display driver class eXtension) pour s’interfacer avec les sous-systèmes graphiques Windows de la manière suivante :

  • Créer la carte graphique représentant le périphérique d’affichage indirect
  • Surveillances de rapport en cours de connexion et de déconnexion du système
  • Fournir des descriptions des moniteurs connectés
  • Fournir les modes d’affichage disponibles
  • Prendre en charge d’autres fonctionnalités d’affichage, telles que le curseur de souris matériel, les communications gamma, I2C et le contenu protégé
  • Traiter les images de bureau à afficher sur le moniteur

Étant donné qu’un IDD est un pilote UMDF, il est également responsable de l’implémentation de toutes les fonctionnalités UMDF telles que les communications des appareils, la gestion de l’alimentation, le plug-and-play, etc.

L’IDD s’exécute dans la session 0 sans qu’aucun composant ne s’exécute dans la session utilisateur, de sorte que toute instabilité de pilote n’affecte pas la stabilité du système dans son ensemble.

Le diagramme suivant fournit une vue d’ensemble architecturale.

Diagramme montrant le pilote d’affichage indirect au sein de l’architecture UMDF.

Modèle en mode utilisateur

L’IDD est un modèle en mode utilisateur uniquement sans prise en charge des composants en mode noyau. Par conséquent, le pilote peut utiliser n’importe quelle API DirectX pour traiter l’image de bureau. En fait, IddCx fournit l’image de bureau à encoder dans une surface DirectX.

Notes

Le pilote ne doit pas appeler des API en mode utilisateur qui ne sont pas appropriées pour l’utilisation du pilote, telles que GDI, les API de fenêtrage, OpenGL ou Vulkan.

L’IDD doit être créé en tant que pilote Windows universel afin qu’il puisse être utilisé sur plusieurs plateformes Windows.

Au moment de la génération :

  • L’IDD UMDF déclare la version d’IddCx sur laquelle il a été créé.
  • Le système d’exploitation garantit que la version correcte d’IddCx est chargée lorsque le pilote est chargé.

Conventions de rappel et de nommage de fonction IddCx

Préfixe Type Notes
EVT_IDD_CX_XXX Fonction de rappel IDD Les IDD implémentent à la fois des rappels spécifiques à IddCx tels que EVT_IDD_CX_ADAPTER_COMMIT_MODES et des rappels WDF pertinents tels que EVT_WDF_DEVICE_D0_EXIT.
IddCxXxx Fonction Fonctions d’extension de classe IddCx fournies par le système que les IDD peuvent appeler ; par exemple, IddCxAdapterInitAsync.
PFN_IDDCX_XXX Pointeurs vers les fonctions IddCx Les IDD n’utilisent pas ces pointeurs. Au lieu de cela, les pilotes doivent utiliser les fonctions IddCxXxx équivalentes.

Exemple de code

Microsoft fournit un exemple d’implémentation d’IDD sur GitHub des exemples de pilotes Windows. Cet exemple montre comment connecter un moniteur, comment répondre à un ensemble de modes et comment recevoir des images.