Attività del driver miracast in modalità utente per supportare le visualizzazioni wireless Miracast in Windows 8.1
Nota
A partire da Windows 10 (WDDM 2.0), il sistema operativo viene fornito con uno stack Miracast predefinito che può funzionare su qualsiasi GPU. Per informazioni sullo stack Microsoft Miracast e sui requisiti dei driver e dell'hardware per supportare le visualizzazioni Miracast a partire da Windows 10, vedere la documentazione seguente:
Creazione di soluzioni di proiezione Wireless di alto livello con Windows 10
La documentazione di WHLK pertinente in Device.Graphics.WDDM13.DisplayRender.WirelessDisplay
Gli sviluppatori di driver non devono più implementare uno stack Miracast personalizzato. Microsoft potrebbe rimuovere il supporto per gli stack Miracast personalizzati in una versione futura di Windows.
Per abilitare la visualizzazione wireless Miracast in Windows 8.1, è necessario creare una DLL autonoma e univoca che implementa un driver in modalità utente Miracast. Questo driver viene caricato in un processo di sessione 0 dedicato. Aggiungere il nome del driver nelle impostazioni software del dispositivo nel file INF come MiracastDriverName:
[MyDevice_DeviceSettings]
HKR,, MiracastDriverName, %REG_SZ%, Miracast.dll
La DLL deve avere una funzione di esportazione denominata QueryMiracastDriverInterface che il sistema operativo può chiamare. Questo file binario del driver non deve usare una DLL del driver di visualizzazione in modalità utente Direct3D esistente.
Poiché il driver miracast in modalità utente viene caricato nel processo UMDF0, non è necessaria alcuna versione di Windows separata in Windows (WOW) di questo driver. Ad esempio, una versione a 64 bit del driver viene usata in un processore a 64 bit.
Quando il sistema operativo è pronto per preparare una sessione connessa Miracast, chiama la funzione CreateMiracastContext del driver in modalità utente Miracast. Quando questa funzione viene chiamata, il driver in modalità utente Miracast alloca tutte le risorse software necessarie per avviare una sessione connessa Miracast. In questa chiamata, il sistema operativo fornisce anche puntatori alle funzioni di callback che il driver può chiamare durante la durata del contesto Miracast corrente. Dopo aver stabilito un collegamento RTSP (Real-Time Streaming Protocol), il sistema operativo chiama StartMiracastSession per avviare effettivamente la sessione connessa Miracast. Quando il driver risponde a questa chiamata di funzione, deve usare la funzione getaddrinfo winsock o altre funzioni pertinenti, per ottenere l'indirizzo IP (Internet Protocol) del sink Miracast e usare le funzioni Winsock standard per creare un socket RDP (Remote Desktop Protocol) Hypertext Caching Protocol (HTCP).
Se una visualizzazione Miracast diventa disponibile, il driver miracast in modalità utente chiama la funzione MiracastIoControl fornita dal sistema operativo per inviare una richiesta di controllo di I/O al driver miniport di visualizzazione per segnalare un valore di rilevamento del plug-hot di arrivo (HPD). Il driver miracast in modalità utente deve anche eseguire query su informazioni e funzionalità del sink Miracast e segnalare alcune di queste informazioni, ad esempio la descrizione del monitoraggio, al driver miniport di visualizzazione chiamando MiracastIoControl.
Dopo l'avvio della sessione connessa Miracast e dopo aver preparato i dati di streaming e prima di inviarli alla rete, il driver deve chiamare la funzione di callback ReportStatistic per segnalare le statistiche del collegamento Miracast al sistema operativo.
Quando il sistema operativo arresta una sessione connessa Miracast, chiama la funzione StopMiracastSession del driver in modalità utente Miracast. In risposta a questa chiamata di funzione, il driver deve chiudere tutti i socket creati e rilasciare tutti gli altri flussi di dati. Il driver non deve chiudere il socket RTSP assegnato dal sistema operativo. Inoltre, non dovrebbe inviare una richiesta al driver miniport di visualizzazione per segnalare un HPD alla partenza del monitor.
Il driver miracast in modalità utente deve rilasciare tutte le risorse software allocate in CreateMiracastContext in risposta alle chiamate del sistema operativo alla funzione DestroyMiracastContext .
Quando il driver miniport di visualizzazione riceve una richiesta DxgkDdiCommitVidPn per spegnere il monitor Miracast connesso, il driver deve chiamare la funzione di callback DxgkCbMiracastSendMessage fornita dal sistema operativo per inviare un messaggio al driver miracast in modalità utente. Il driver miracast in modalità utente dovrebbe quindi inserire il sink Miracast in uno stato a basso consumo.
La funzione di callback RegisterForDataRateNotifications può essere chiamata facoltativamente dal driver miracast in modalità utente per la registrazione con il sistema operativo da ricevere, una volta al secondo, le notifiche di qualità di rete (QoS) e la larghezza di banda di rete corrente della connessione Miracast. Queste informazioni di rete vengono fornite dalle chiamate del sistema operativo alla funzione pfnDataRateNotify .
Il driver miracast in modalità utente può anche chiamare queste funzioni di callback facoltative fornite dal sistema operativo:
Funzione | Descrizione |
---|---|
GetNextChunkData | Fornisce informazioni sul blocco di codifica successivo. |
ReportSessionStatus | Il driver chiama questa funzione per segnalare lo stato della sessione connessa Miracast corrente. |