Aufgaben des Miracast-Benutzermodustreibers zur Unterstützung von drahtlosen Miracast-Anzeigen auf Windows 8.1

Hinweis

Ab Windows 10 (WDDM 2.0) wird das Betriebssystem mit einem integrierten Miracast-Stapel ausgeliefert, der auf jeder GPU funktionieren kann. Informationen zum Microsoft Miracast-Stapel und zu den Anforderungen an Treiber und Hardware zur Unterstützung von Miracast-Displays ab Windows 10 finden Sie in der folgenden Dokumentation:

Treiberentwickler sollten keinen benutzerdefinierten Miracast-Stapel mehr implementieren. Microsoft kann die Unterstützung für benutzerdefinierte Miracast-Stapel in einer zukünftigen Version von Windows entfernen.

Um drahtlose Miracast-Anzeigen unter Windows 8.1 zu aktivieren, müssen Sie eine eigenständige, eindeutige DLL erstellen, die einen Miracast-Benutzermodustreiber implementiert. Dieser Treiber wird in einem dedizierten Sitzungs-0-Prozess geladen. Fügen Sie den Namen des Treibers in den Gerätesoftwareeinstellungen in der INF-Datei als MiracastDriverName hinzu:

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

Die DLL sollte über eine Exportfunktion namens QueryMiracastDriverInterface verfügen, die vom Betriebssystem aufgerufen werden kann. Diese Treiberbinärdatei darf keine vorhandene Direct3D-Anzeigetreiber-DLL für den Benutzermodus verwenden.

Da der Miracast-Benutzermodustreiber in den UMDF0-Prozess geladen wird, ist keine separate Windows on Windows-Version (WOW) dieses Treibers erforderlich. Beispielsweise wird eine 64-Bit-Version des Treibers auf einem 64-Bit-Prozessor verwendet.

Wenn das Betriebssystem bereit ist, sich auf eine verbundene Miracast-Sitzung vorzubereiten, ruft es die CreateMiracastContext-Funktion des Miracast-Benutzermodustreibers auf. Wenn diese Funktion aufgerufen wird, ordnet der Miracast-Benutzermodustreiber alle Softwareressourcen zu, die er zum Starten einer verbundenen Miracast-Sitzung benötigt. In diesem Aufruf stellt das Betriebssystem auch Zeiger auf Rückruffunktionen bereit, die der Treiber während der Lebensdauer des aktuellen Miracast-Kontexts aufrufen kann. Nachdem eine RTSP-Verbindung (Real-Time Streaming Protocol) hergestellt wurde, ruft das Betriebssystem StartMiracastSession auf, um die verbundene Miracast-Sitzung zu starten. Wenn der Treiber auf diesen Funktionsaufruf antwortet, sollte er die Winsock getaddrinfo-Funktion oder andere relevante Funktionen verwenden, um die IP-Adresse (Internet Protocol) der Miracast-Senke abzurufen und standardmäßige Winsock-Funktionen zum Erstellen eines RDP-Sockets (Hypertext Caching Protocol) zu erstellen.

Wenn ein Miracast-Display verfügbar wird, ruft der Miracast-Benutzermodustreiber die vom Betriebssystem bereitgestellte MiracastIoControl-Funktion auf, um eine E/A-Steuerungsanforderung an den Display-Miniporttreiber zu senden, um einen HpD-Erkennungswert (Hot-Plug Detection, Hot-Plug-Erkennung) des Monitors zu melden. Der Miracast-Benutzermodustreiber sollte außerdem Die Informationen und Funktionen der Miracast-Senke abfragen und einige dieser Informationen, z. B. die Bildschirmbeschreibung, an den Anzeige-Miniporttreiber melden, indem MiracastIoControl aufgerufen wird.

Nachdem die verbundene Miracast-Sitzung gestartet wurde, und nachdem die Streamingdaten vorbereitet wurden und vor dem Senden an das Netzwerk, muss der Treiber die ReportStatistic-Rückruffunktion aufrufen, um die Statistiken des Miracast-Links an das Betriebssystem zu melden.

Wenn das Betriebssystem eine verbundene Miracast-Sitzung beendet, ruft es die StopMiracastSession-Funktion des Miracast-Benutzermodustreibers auf. Als Reaktion auf diesen Funktionsaufruf sollte der Treiber alle erstellten Sockets schließen und alle weiteren Datenstreamings löschen. Der Treiber sollte den VOM Betriebssystem bereitgestellten RTSP-Socket nicht schließen. Es sollte auch keine Anforderung an den Anzeige-Miniport-Fahrer senden, um eine HPD bei der Abreise des Monitors zu melden.

Der Miracast-Benutzermodustreiber sollte alle Softwareressourcen freigeben, die er in CreateMiracastContext als Reaktion auf die Aufrufe des Betriebssystems an die DestroyMiracastContext-Funktion zugewiesen hat.

Wenn der Anzeige-Miniporttreiber eine DxgkDdiCommitVidPn-Anforderung zum Ausschalten des verbundenen Miracast-Monitors empfängt, sollte der Treiber die vom Betriebssystem bereitgestellte DxgkCbMiracastSendMessage-Rückruffunktion aufrufen, um eine Nachricht an den Miracast-Benutzermodustreiber zu senden. Der Miracast-Benutzermodustreiber sollte dann die Miracast-Senke in einen Low-Power-Zustand versetzen.

Die Rückruffunktion RegisterForDataRateNotifications kann optional vom Miracast-Benutzermodustreiber aufgerufen werden, um sich beim Betriebssystem zu registrieren, um einmal pro Sekunde QoS-Benachrichtigungen (Network Quality of Service) und die aktuelle Netzwerkbandbreite der Miracast-Verbindung zu empfangen. Diese Netzwerkinformationen werden von Betriebssystemaufrufen der pfnDataRateNotify-Funktion bereitgestellt.

Der Miracast-Benutzermodustreiber kann auch diese optionalen Rückruffunktionen aufrufen, die vom Betriebssystem bereitgestellt werden:

Funktion BESCHREIBUNG
GetNextChunkData Stellt Informationen zum nächsten Codierungsblock bereit.
ReportSessionStatus Der Treiber ruft diese Funktion auf, um die status der aktuellen verbundenen Miracast-Sitzung zu melden.