Miracast ワイヤレス ディスプレイのサポート

Miracast ワイヤレス ディスプレイ標準のサポートは、Windows 8.1 (WDDM 1.3) で導入されました。

Windows 10 以降の Miracast のサポート

Windows 10 (WDDM 2.0) 以降、オペレーティング システムには、任意の GPU で動作できる組み込みの Miracast スタックが付属しています。 Microsoft Miracast スタックと、Windows 10 以降の Miracast ディスプレイをサポートするためのドライバーとハードウェアの要件については、次のドキュメントを参照してください。

ドライバー開発者は、カスタム Miracast スタックを実装する必要がなくなりました。 Microsoft は、将来のバージョンの Windows でカスタム Miracast スタックのサポートを削除する可能性があります。

Windows 8.1 での Miracast のサポート

WDDM 1.3 ドライバーは、必要に応じて、Windows 8.1 で提供される Miracast DDI を介して Miracast をサポートできます。 この記事の残りの部分とその関連記事では、このサポートを提供する方法について説明します。

ユーザー モード デバイス ドライバー インターフェイス (DDI)

Miracast ユーザー モード ドライバーによって呼び出されるワイヤレス ディスプレイ コールバック関数

次の表に、オペレーティング システムが実装するワイヤレス ディスプレイ (Miracast) のユーザー モード関数を示します。 これらの関数を呼び出すことができるのは、Windows 8.1 Miracast ユーザー モード ドライバーだけです。 Miracast ディスプレイ コールバック関数へのポインターは MIRACAST_CALLBACKS 構造体で返されます。

関数 説明
PFN_GET_NEXT_CHUNK_DATA DXGK_INTERRUPT_TYPE 割り込み型が DXGK_INTERRUPT_MIRACAST_CHUNK_PROCESSING_COMPLETE の場合に、DirectX グラフィックス カーネル サブシステムに報告された次の Miracast エンコード チャンクに関する情報を提供します。
PFN_MIRACAST_IO_CONTROL カーネル モード ディスプレイ ミニポート ドライバーに同期 I/O 制御要求を送信するユーザー モードディスプレイ ドライバーによって呼び出されます。
PFN_REGISTER_DATARATE_NOTIFICATIONS Miracast 接続のネットワーク サービス品質 (QoS) 通知と現在のネットワーク帯域幅を受信するためにオペレーティング システムに登録するユーザー モード ドライバーによって呼び出されます。
PFN_REPORT_SESSION_STATUS 現在の Miracast 接続セッションの状態を報告するために、ユーザー モード ディスプレイ ドライバーによって呼び出されます。
PFN_REPORT_STATISTIC Miracast リンクの統計情報をオペレーティング システムに報告するために、ユーザー モード ディスプレイ ドライバーによって呼び出されます。

Windows 8.1 Miracast ユーザー モード ドライバーによって実装されるワイヤレス ディスプレイ関数

次の表に、Windows 8.1 Miracast ユーザー モード ドライバーが実装する必要があるワイヤレス ディスプレイ (Miracast) 関数の一覧を示します。 この種類のドライバーは、スタンドアロン DLL で実行されます。

オペレーティング システムの QueryMiracastDriverInterface 関数呼び出しに応答して、Miracast ユーザー モード ドライバーは MIRACAST_DRIVER_INTERFACE 構造体でこれらの関数へのポインターを渡す必要があります。 例外は pfnDataRateNotify で、ポインターは RegisterForDataRateNotifications で宣言されます。

関数 説明
PFN_CREATE_MIRACAST_CONTEXT ユーザー モードの Miracast コンテキストを作成するためにオペレーティング システムによって呼び出されます。
PFN_DESTROY_MIRACAST_CONTEXT ユーザー モードの Miracast コンテキストを破棄するためにオペレーティング システムによって呼び出されます。
PFN_HANDLE_KMD_MESSAGE ディスプレイ ミニポート ドライバーが DxgkCbMiracastSendMessage 関数を呼び出すときに、Miracast ユーザー モード ドライバーが受信する非同期カーネル モード メッセージを処理するために、オペレーティング システムによって呼び出されます。
PFN_DATARATE_NOTIFICATION Miracast ネットワーク リンクのビット レートが変更されたことを Miracast ユーザー モード ドライバーに通知するために、オペレーティング システムによって呼び出されます。 この関数は、RegisterForDataRateNotifications 関数が呼び出されたときにオペレーティング システムに登録されます。
QUERY_MIRACAST_DRIVER_INTERFACE Miracast ユーザー モード ドライバー インターフェイス、MIRACAST_DRIVER_INTERFACE にクエリを実行するために、オペレーティング システムによって呼び出されます。
PFN_START_MIRACAST_SESSION Miracast 接続セッションを開始するためにオペレーティング システムによって呼び出されます。
PFN_STOP_MIRACAST_SESSION StartMiracastSession 関数への呼び出しによって以前に開始された Miracast 接続セッションを開始するために、オペレーティング システムによって呼び出されます。

次の表に、Windows 8.1 Miracast ディスプレイ デバイス ドライバー インターフェイス (DDI) で使用されるユーザー モードの構造体と列挙型を示します。

構造体/列挙型 説明
MIRACAST_CALLBACKS Miracast ユーザー モード ドライバーが呼び出すことができるワイヤレス ディスプレイ (Miracast) ランタイム コールバック関数へのポインターが含まれています。
MIRACAST_CHUNK_DATA ユーザー モード ドライバーがワイヤレス ディスプレイ (Miracast) GetNextChunkData 関数を呼び出すときに使用するエンコード チャンク データが含まれています。
MIRACAST_CHUNK_ID ワイヤレス ディスプレイ (Miracast) エンコード チャンクを識別する情報を格納します。
MIRACAST_CHUNK_INFO 指定されたワイヤレス ディスプレイ (Miracast) エンコード チャンクに関する情報が含まれています。
MIRACAST_CHUNK_TYPE 処理するワイヤレス ディスプレイ (Miracast) チャンク情報の種類を指定します。
MIRACAST_DATARATE_STATS ワイヤレス ディスプレイ (Miracast) pfnDataRateNotify 関数で使用される、オーディオ/ビデオ エンコーダーのビット レートと、失敗または再試行された Wi-Fi フレームに関する情報が含まれています。
MIRACAST_DRIVER_INTERFACE Miracast ユーザー モード ドライバーが実装するワイヤレス ディスプレイ (Miracast) 関数へのポインターが含まれています。
MIRACAST_PROTOCOL_EVENT ユーザー モード ディスプレイ ドライバーが報告するワイヤレス ディスプレイ (Miracast) プロトコル イベントの種類を指定します。
MIRACAST_SESSION_INFO ワイヤレス ディスプレイ (Miracast) 接続セッションに関する情報が含まれています。
MIRACAST_STATISTIC_DATA ユーザー モード ディスプレイ ドライバーがオペレーティング システムに報告する Miracast 統計データが含まれています。
MIRACAST_STATISTIC_TYPE ユーザー モード ディスプレイ ドライバーが生成する Miracast 統計データの種類を指定します。
MIRACAST_STATUS Miracast 接続の状態を報告するためにユーザー モード ディスプレイ ドライバーが使用する状態の種類を指定します。
MIRACAST_WFD_CONNECTION_STATS Wi-Fi Direct 接続のビット レート情報が含まれています。

次のユーザー モードの構造体と列挙型は Miracast ディスプレイをサポートしており、Windows 8.1 で新規導入または更新されたものです。

カーネル モードの DDI

ワイヤレス ディスプレイ (Miracast) コールバック インターフェイス

Miracast ディスプレイ コールバック インターフェイスには、Windows 8.1 でワイヤレス (Miracast) ディスプレイをサポートするために DirectX グラフィックス カーネル サブシステムが実装する関数が含まれています。

次の表に、WDDM 1.3 ディスプレイ ミニポート ドライバーによって呼び出されるこれらのカーネル モード関数の一覧を示します。

関数 説明
DXGKCB_MIRACAST_SEND_MESSAGE ユーザー モード ディスプレイ ドライバーに非同期メッセージを送信します。
DXGKCB_MIRACAST_SEND_MESSAGE_CALLBACK DxgkCbMiracastSendMessage 関数の呼び出しでユーザー モード ドライバーに送信されたメッセージが完了または取り消されたときにカーネル モードで呼び出されます。
DXGKCB_MIRACAST_REPORT_CHUNK_INFO エンコード チャンクに関する情報を報告するために、ディスプレイ ミニポート ドライバーによって呼び出されます。

ディスプレイ ミニポート ドライバーは、DXGK_MIRACAST_DISPLAY_CALLBACKS 構造体にこれらの関数へのポインターを入力する必要があります。

ワイヤレス ディスプレイ (Miracast) インターフェイス

次の表に、Windows 8.1 でワイヤレス (Miracast) ディスプレイをサポートするために実装するミニポート ドライバーを表示するカーネル モード関数の一覧を示します。 Miracast インターフェイス関数へのポインターは、DXGK_MIRACAST_INTERFACE 構造体で返されます。

関数 説明
DXGKCB_MIRACAST_SEND_MESSAGE_CALLBACK DxgkCbMiracastSendMessage 関数の呼び出しでユーザー モード ドライバーに送信されたメッセージが完了または取り消されたときにカーネル モードで呼び出されます。
DXGKDDI_MIRACAST_CREATE_CONTEXT Miracast デバイスのカーネル モード コンテキストを作成します。
DXGKDDI_MIRACAST_DESTROY_CONTEXT Miracast デバイスのインスタンスを破棄します。
DXGKDDI_MIRACAST_HANDLE_IO_CONTROL MiracastIoControl 関数に対するユーザー モード ディスプレイ ドライバーの呼び出しに応答して、ディスプレイ ミニポート ドライバーによる同期 I/O 制御要求の処理を要求するために、オペレーティング システムによって呼び出されます。
DXGKDDI_MIRACAST_QUERY_CAPS 現在のディスプレイ アダプターの Miracast 機能を照会します。 オペレーティング システムは、ディスプレイ アダプターの初回起動時にのみこの関数を呼び出し、返された機能を保管します。

これらのカーネル モードの構造体と列挙型は Miracast ディスプレイをサポートしており、Windows 8.1 で新規導入または更新されたものです。