Partager via


Tâches du pilote en mode utilisateur Miracast pour prendre en charge les écrans sans fil Miracast sur Windows 8.1

Notes

À compter de Windows 10 (WDDM 2.0), le système d’exploitation est fourni avec une pile Miracast intégrée qui peut fonctionner sur n’importe quel GPU. Pour plus d’informations sur la pile Microsoft Miracast et la configuration requise des pilotes et du matériel pour prendre en charge les affichages Miracast à partir de Windows 10, consultez la documentation suivante :

Les développeurs de pilotes ne doivent plus implémenter une pile Miracast personnalisée. Microsoft peut supprimer la prise en charge des piles Miracast personnalisées dans une version ultérieure de Windows.

Pour activer les affichages sans fil Miracast sur windows 8.1, vous devez créer une DLL autonome et unique qui implémente un pilote en mode utilisateur Miracast. Ce pilote est chargé dans un processus de session 0 dédié. Ajoutez le nom du pilote dans les paramètres du logiciel du périphérique dans le fichier INF en tant que MiracastDriverName :

[MyDevice_DeviceSettings]
HKR,, MiracastDriverName, %REG_SZ%, Miracast.dll

La DLL doit avoir une fonction d’exportation nommée QueryMiracastDriverInterface que le système d’exploitation peut appeler. Ce fichier binaire de pilote ne doit pas utiliser une DLL de pilote d’affichage en mode utilisateur Direct3D existante.

Étant donné que le pilote en mode utilisateur Miracast est chargé dans le processus UMDF0, aucune version Windows sur Windows (WOW) distincte de ce pilote n’est nécessaire. Par exemple, une version 64 bits du pilote est utilisée sur un processeur 64 bits.

Lorsque le système d’exploitation est prêt à préparer une session connectée à Miracast, il appelle la fonction CreateMiracastContext du pilote utilisateur Miracast. Lorsque cette fonction est appelée, le pilote en mode utilisateur Miracast alloue toutes les ressources logicielles dont il a besoin pour démarrer une session connectée à Miracast. Dans cet appel, le système d’exploitation fournit également des pointeurs vers des fonctions de rappel que le pilote peut appeler pendant la durée de vie du contexte Miracast actuel. Ensuite, une fois qu’un lien rtsp (Real-Time Streaming Protocol) est établi, le système d’exploitation appelle StartMiracastSession pour démarrer réellement la session connectée Miracast. Lorsque le pilote répond à cet appel de fonction, il doit utiliser la fonction winsock getaddrinfo , ou d’autres fonctions pertinentes, pour obtenir l’adresse IP (Internet Protocol) du récepteur Miracast et utiliser les fonctions Winsock standard pour créer un socket RDP (Hypertext Caching Protocol).

Si un affichage Miracast devient disponible, le pilote en mode utilisateur Miracast appelle la fonction MiracastIoControl fournie par le système d’exploitation pour envoyer une demande de contrôle d’E/S au pilote miniport d’affichage afin de signaler une valeur de détection des plug-ins (HPD) à l’arrivée du moniteur. Le pilote en mode utilisateur Miracast doit également interroger les informations et les fonctionnalités du récepteur Miracast et signaler certaines de ces informations, telles que la description du moniteur, au pilote miniport d’affichage en appelant MiracastIoControl.

Une fois la session connectée Miracast démarrée, une fois que les données de streaming ont été préparées et avant de les envoyer au réseau, le pilote doit appeler la fonction de rappel ReportStatistic pour signaler les statistiques du lien Miracast au système d’exploitation.

Lorsque le système d’exploitation arrête une session connectée Miracast, il appelle la fonction StopMiracastSession du pilote en mode utilisateur Miracast. En réponse à cet appel de fonction, le pilote doit fermer tous les sockets qu’il a créés et supprimer tous les autres flux de données. Le pilote ne doit pas fermer le socket RTSP que le système d’exploitation lui a donné. Il ne doit pas non plus envoyer une demande au pilote du miniport d’affichage pour signaler un HPD au départ du moniteur.

Le pilote en mode utilisateur Miracast doit libérer toutes les ressources logicielles qu’il a allouées dans CreateMiracastContext en réponse aux appels du système d’exploitation à la fonction DestroyMiracastContext .

Lorsque le pilote de miniport d’affichage reçoit une demande DxgkDdiCommitVidPn pour mettre hors tension le moniteur Miracast connecté, le pilote doit appeler la fonction de rappel DxgkCbMiracastSendMessage fournie par le système d’exploitation pour envoyer un message au pilote en mode utilisateur Miracast. Le pilote en mode utilisateur Miracast doit ensuite placer le récepteur Miracast dans un état de faible consommation.

La fonction de rappel RegisterForDataRateNotifications peut éventuellement être appelée par le pilote en mode utilisateur Miracast pour s’inscrire auprès du système d’exploitation afin de recevoir, une fois par seconde, des notifications de qualité de service réseau (QoS) et la bande passante réseau actuelle de la connexion Miracast. Ces informations réseau sont fournies par les appels du système d’exploitation à la fonction pfnDataRateNotify .

Le pilote en mode utilisateur Miracast peut également appeler ces fonctions de rappel facultatives fournies par le système d’exploitation :

Fonction Description
GetNextChunkData Fournit des informations sur le bloc d’encodage suivant.
ReportSessionStatus Le pilote appelle cette fonction pour signaler la status de la session connectée Miracast actuelle.