WDDM 1.2 和更高版本中的即插即用 (PnP)

(WDDM) 1.2 及更高版本显示微型端口驱动程序的所有 Windows 显示驱动程序都必须支持以下行为,以响应即插即用 (PnP) 基础结构启动和停止请求。 根据驱动程序返回成功或失败代码,或者系统硬件是基于基本输入/输出系统 (BIOS) 还是统一可扩展固件接口 (UEFI) ,行为可能会有所不同。

最低 WDDM 版本 1.2
最大 Windows 版本 8
驱动程序实现 - 完整图形和仅显示 必需
WHCK 要求和测试

Device.Graphics.WDDM12.Display.PnpStopStartSupport

显示微型端口驱动程序 PnP DDI

从 Windows 8 开始,Microsoft DirectX 图形内核子系统提供此函数,当显示设备启动或从休眠状态恢复时,驱动程序可以调用该函数:

这些函数和结构可用于显示微型端口驱动程序,以实现 WDDM 1.2 及更高版本的 PnP 要求:

PnP 启动操作

在启动期间或从一个显示驱动程序升级到另一个显示驱动程序期间,在显示设备上发生即插即用 (PnP) 启动过程。 在这种情况下,驱动程序必须调用 DxgkCbAcquirePostDisplayOwnership 函数来获取有关帧缓冲区的信息并保持显示同步。 帧缓冲区信息是从固件或从系统上加载的以前的 WDDM 1.2 及更高版本的驱动程序提供的。

在调用操作系统使 DxgkDdiSetPowerState 函数返回到 D0 电源状态和 DxgkDdiStartDevice 函数期间,WDDM 1.2 及更高版本的驱动程序必须将源可见性设置为 false (DXGKARG_SETVIDPNSOURCEVISIBILITY可见 = 所有活动视频呈现网络 (VidPN) 目标的 FALSE) 。 在这种情况下,显示管道硬件必须与监视器保持同步信号,但管道必须继续将黑色像素数据发送到监视器,无论当前正在扫描的图面中存在什么像素数据。这意味着,像素管道保证会用所有黑色像素为监视器留空。 稍后,当第一个帧呈现到帧缓冲区中时,操作系统会将源可见性设置为 true。

所有这些过程使监视器保持同步,并确保用户不会在屏幕上看到闪烁或闪烁。

这些是驱动程序在 PnP 启动过程后应返回的返回代码。

驱动程序返回代码 说明

成功

行为与 Windows 7 中的行为相同。

对于基于 BIOS 的系统,如果驱动程序成功启动,则帧缓冲区仍处于活动状态,并且驱动程序必须准备好设置为有效模式。

失败

对于基于 BIOS 的系统,驱动程序必须使系统保持 BIOS 兼容状态。

对于基于 UEFI 的系统,驱动程序必须将显示器保留为 UEFI 图形输出协议 (GOP) 设置的相同模式,以便基本显示驱动程序可以使用显示器。 驱动程序必须返回有效的错误代码。 如果驱动程序无法使 GOP 处于可由基本显示驱动程序使用的状态,则驱动程序必须从 Ntstatus.h 返回 STATUS_GRAPHICS_STALE_MODESET 错误代码,并且操作系统会导致发生系统 bug 检查。

PnP 停止操作

驱动程序升级到新版本时,通常会在显示设备上发生即插即用 (PnP) 停止进程。 在这种情况下,操作系统调用驱动程序的 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 函数,这要求驱动程序提供准确的帧缓冲区信息。

DxgkDdiStopDeviceAndReleasePostDisplayOwnership 调用中,驱动程序必须确保活动 VidPn 目标的源可见性为 true, (DXGKARG_SETVIDPNSOURCEVISIBILITY可见 = TRUE) 。 此外,从 WDDM 1.2 开始,驱动程序需要确保将像素管道编程为从中扫描出来的表面填充黑色像素。 在源可见性设置为 true 之前,驱动程序应使用黑色像素完成表面填充。

此外,请确保在驱动程序中实现 DxgkDdiStopDevice 。 在某些情况下,操作系统可能会调用 DxgkDdiStopDevice 而不是 DxgkDdiStopDeviceAndReleasePostDisplayOwnership,或者在调用 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 失败之后。

这些是驱动程序在 PnP 停止进程后应返回的返回代码。

驱动程序返回代码 说明

成功,驱动程序返回模式信息

在驱动程序停止之前,它必须使用当前分辨率设置基本显示驱动程序可以使用的帧缓冲区,并且当操作系统调用 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 函数时,驱动程序必须返回此信息。 保存的模式信息不必与 BIOS 兼容,在系统重新启动之前,基本显示驱动程序不会提供 BIOS 模式。

操作系统保证,如果 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 返回STATUS_SUCCESS,则不会调用 DxgkDdiStopDevice

成功,驱动程序将DXGK_DISPLAY_INFORMATION结构的 WidthHeight 成员设置为零

仅当系统有两个图形卡,没有监视器连接到当前开机自测试 (POST) 设备,并且操作系统调用 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 函数来停止 POST 设备时,才可能实现此方案。

在这种情况下,当前显示器继续运行于第二个图形适配器上,基本显示驱动程序在支持 POST 设备的适配器上以无外设模式运行。

失败

操作系统通过 DxgkDdiStopDevice 函数调用 Windows 7 样式的 PnP 停止驱动程序接口。

对于基于 BIOS 的系统,驱动程序必须将显示器设置为 BIOS 兼容模式。

对于基于 UEFI 的系统,基本显示驱动程序在图形适配器上的无外设模式下运行。

有关 PnP 和其他状态转换的进一步要求,请参阅 在 WDDM 1.2 及更高版本中提供无缝状态转换

硬件认证要求

有关硬件设备在实现此功能时必须满足的要求的信息,请参阅 Device.Graphics.WDDM12.Display.PnpStopStartSupport 上的相关 WHCK 文档

有关随 Windows 8 添加的功能的回顾,请参阅 WDDM 1.2 功能。