在 Windows 8.1 中支持 Miracast

本文列出了驱动程序可用于支持 Windows 8.1(WDDM 1.3)中 Miracast 无线显示器的 DDI 更新。 从 Windows 10(WDDM 2.0)开始,作系统附带了可在任何 GPU 上运行的内置 Miracast 堆栈。 驱动程序开发人员不应再实现自定义 Miracast 堆栈。 Microsoft可能会在将来的 Windows 版本中删除对自定义 Miracast 堆栈的支持。

以下附加文章介绍了驱动程序如何支持 Windows 8.1(WDDM 1.3)中的 Miracast 无线显示器。

用户模式设备驱动程序接口 (DDI)

Miracast 用户模式驱动程序调用的无线显示回调函数

下表列出了作系统实现的无线显示器(Miracast)用户模式功能。 只有 Windows 8.1 Miracast 用户模式驱动程序可以调用这些函数。 在 MIRACAST_CALLBACKS 结构中返回了指向 Miracast 显示回调函数的指针。

功能 DESCRIPTION
PFN_GET_NEXT_CHUNK_DATA 提供关于当DXGK_INTERRUPT_TYPE中断类型为DXGK_INTERRUPT_MIRACAST_CHUNK_PROCESSING_COMPLETE时,将下一个 Miracast 编码区块报告给 DirectX 图形内核子系统的信息。
PFN_MIRACAST_IO_CONTROL 由用户模式显示驱动程序调用,以向内核模式显示微型端口驱动程序发送同步 I/O 控制请求。
PFN_REGISTER_DATARATE_NOTIFICATIONS 由用户模式驱动程序调用以注册到操作系统,以接收网络服务质量(QoS)通知和 Miracast 连接的当前网络带宽。
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 中声明了一个指针。

功能 DESCRIPTION
PFN_CREATE_MIRACAST_CONTEXT 由操作系统调用以创建用户模式 Miracast 上下文。
PFN_DESTROY_MIRACAST_CONTEXT 由操作系统调用以销毁用户模式 Miracast 上下文。
PFN_HANDLE_KMD_MESSAGE 由操作系统调用以处理 Miracast 用户模式驱动程序在显示小型端口驱动程序调用 DxgkCbMiracastSendMessage 函数时收到的异步内核模式消息。
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)的用户模式结构和枚举。

结构/枚举 DESCRIPTION
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 直接连接的比特率信息。

以下用户模式结构和枚举支持 Miracast 显示,并且已针对 Windows 8.1 进行了新的或更新:

内核模式 DDI

无线显示器 (Miracast) 回调接口

Miracast 显示回调接口包含 DirectX 图形内核子系统实现以支持 Windows 8.1 中的无线(Miracast)显示器的函数。

下表列出了 WDDM 1.3 显示微型端口驱动程序调用的这些内核模式函数:

功能 DESCRIPTION
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 结构中返回。

功能 DESCRIPTION
DXGKCB_MIRACAST_SEND_MESSAGE_CALLBACK 在内核模式下,当通过调用 DxgkCbMiracastSendMessage 函数发送到用户模式驱动程序的消息已完成或取消时进行调用。
DXGKDDI_MIRACAST_CREATE_CONTEXT 为 Miracast 设备创建内核模式上下文。
DXGKDDI_MIRACAST_DESTROY_CONTEXT 销毁 Miracast 设备的实例。
DXGKDDI_MIRACAST_HANDLE_IO_CONTROL 由操作系统调用以请求显示微型端口驱动程序处理同步 I/O 控制请求,以响应对 MiracastIoControl 函数的用户模式显示驱动程序调用。
DXGKDDI_MIRACAST_QUERY_CAPS 查询当前显示适配器的 Miracast 功能。 作系统仅在首次启动显示适配器时调用此函数,然后存储返回的功能。

这些支持 Miracast 显示器的内核模式结构和枚举已为 Windows 8.1 新增或更新。