Miracast 使用者模式驅動程式工作,以支援 Windows 8.1 上的Miracast無線顯示器

注意

從 Windows 10 (WDDM 2.0) 開始,操作系統隨附可在任何 GPU 上運作的內建 Miracast 堆疊。 如需 Microsoft Miracast 堆疊的相關信息,以及支援 Miracast 顯示器的驅動程式和硬體需求,請從 Windows 10 開始,請參閱下列檔:

驅動程式開發人員不應再實作自定義Miracast堆疊。 Microsoft 可能會在未來的 Windows 版本中移除自定義 Miracast 堆疊的支援。

若要在 Windows 8.1 上啟用 Miracast 無線顯示器,您必須建立可實作 Miracast 使用者模式驅動程式的獨立唯一 DLL。 此驅動程式會在專用的工作階段 0 程式中載入。 在 INF 檔案中的裝置軟體設定中,將驅動程式的名稱新增為 MiracastDriverName

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

DLL 應該有一個名為 QueryMiracastDriverInterface 的導出函式,操作系統可以呼叫。 此驅動程式二進位檔不得使用現有的 Direct3D 使用者模式顯示驅動程式 DLL。

由於 Miracast 使用者模式驅動程式已載入 UMDF0 進程,因此不需要 Windows (WOW) 版本的 Windows。 例如,64 位版本的驅動程式會在64位處理器上使用。

當操作系統準備好準備進行Miracast聯機會話時,它會呼叫Miracast使用者模式驅動程式的 CreateMiracastContext 函式。 呼叫此函式時,Miracast 使用者模式驅動程式會配置啟動Miracast聯機會話所需的所有軟體資源。 在此呼叫中,操作系統也會提供驅動程式可在目前Miracast內容存留期內呼叫的回呼函式指標。 然後在建立 Real-Time 串流通訊協定 (RTSP) 鏈接之後,操作系統會呼叫 StartMiracastSession ,以實際啟動 Miracast 連線的會話。 當驅動程式回應此函式呼叫時,應該使用 Winsock getaddrinfo 函式或其他相關函式,以取得 Miracast 接收的因特網通訊協定 (IP) 位址,並使用標準 Winsock 函式建立超文本快取通訊協定 () 遠端桌面通訊協定 (RDP) 套接字。

如果 Miracast 顯示器可供使用,Miracast 使用者模式驅動程式會呼叫作業系統提供的 MiracastIoControl 函式,將 I/O 控制要求傳送至顯示器迷你埠驅動程式,以報告監視器抵達熱插即插即用偵測, (HPD) 感知值。 Miracast 使用者模式驅動程式也應該查詢 Miracast 接收資訊和功能,並藉由呼叫 MiracastIoControl 向顯示器迷你埠驅動程序報告一些資訊,例如監視描述。

啟動Miracast連線的會話,並在準備串流數據並傳送至網路之前,驅動程式必須呼叫 ReportStatistic 回呼函式來報告操作系統的Miracast連結統計數據。

當操作系統停止Miracast聯機會話時,它會呼叫Miracast使用者模式驅動程式的 StopMiracastSession函 式。 為了回應此函數調用,驅動程式應該關閉它建立的所有套接字,並卸除所有進一步的數據流。 驅動程式不應該關閉作業系統提供的 RTSP 套接字。 它也不應該將要求傳送給顯示器迷你埠驅動程式,以在監視器出發時回報 HPD。

Miracast 使用者模式驅動程式應該釋放它在 CreateMiracastContext 中配置的所有軟體資源,以回應 對 DestroyMiracastContext 函式的作業系統呼叫。

當顯示迷你埠驅動程式收到 DxgkDdiCommitVidPn 要求來關閉連線 Miracast 監視器的電源時,驅動程式應該呼叫操作系統提供的 DxgkCbMiracastSendMessage 回呼函式,以將訊息傳送至 Miracast 使用者模式驅動程式。 Miracast 使用者模式驅動程式應該接著將Miracast接收放入低電源狀態。

Miracast 使用者模式驅動程式可以選擇性地呼叫 RegisterForDataRateNotifications 回呼函式,以向操作系統註冊,以接收每秒一次的網路服務品質, (QoS) 通知和 Miracast 連線目前的網路頻寬。 此網路資訊是由 對 pfnDataRateNotify 函式的作業系統呼叫所提供。

Miracast 使用者模式驅動程式也可以呼叫作業系統所提供的這些選擇性回呼函式:

函式 描述
GetNextChunkData 提供下一個編碼區塊的相關信息。
ReportSessionStatus 驅動程式會呼叫此函式來報告目前Miracast聯機會話的狀態。