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. Quelques scénarios typiques où un IDD est nécessaire incluent :

  • Diffuser la sortie d’affichage sur un réseau vers un client distant (affichage distant).
  • Créer des moniteurs virtuels pour des applications telles que des environnements de bureau virtuel (affichages virtuels).
  • Connexion d’un dongle à un PC via USB qui dispose d’un moniteur standard (VGA, DVI, HDMI, DP, et ainsi de suite) connecté à celui-ci.

Implémentation de IDD

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

  • Créer l’adaptateur graphique représentant le périphérique d’affichage indirect.
  • Signaler la connexion et la déconnexion des moniteurs du système.
  • Fournissez 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, le gamma, les communications I2C et le contenu protégé.
  • Traiter les images du bureau pour les afficher sur le moniteur.

Étant donné qu’un IDD est un pilote UMDF, il est également responsable de la mise en œuvre de toutes les fonctionnalités UMDF telles que les communications avec l’appareil, la gestion de l’alimentation, le plug and play, etc.

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

Le diagramme suivant fournit une vue d’ensemble architecturale.

Diagram that shows the indirect display driver within the UMDF architecture.Diagramme montrant le pilote d’affichage indirect dans l’architecture UMDF.

Modèle en mode utilisateur

L’IDD utilise un modèle en mode utilisateur et ne prend pas en charge les composants en mode noyau. Avec ce modèle, le pilote peut utiliser n’importe quelle API DirectX pour traiter l’image de bureau. IddCx fournit l’image de bureau à encoder dans une surface DirectX.

Le pilote ne doit pas appeler des API en mode utilisateur qui ne sont pas appropriées pour une utilisation par le pilote, telles que GDI, les API de gestion de fenêtres, OpenGL ou Vulkan.

Générez l’IDD en tant que pilote Windows universel pour pouvoir l’utiliser sur plusieurs plateformes Windows.

Lors de la compilation :

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

Conventions de nommage des fonctions et des rappels d’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 équivalentes IddCxXxx.

Exemple de code

Microsoft fournit un exemple de mise en œuvre d’IDD sur le référentiel 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.