DXGKDDI_STOP_DEVICE_AND_RELEASE_POST_DISPLAY_OWNERSHIP回调函数 (dispmprt.h)
由操作系统调用,以请求显示微型端口驱动程序重置显示设备,并释放当前开机自测试 (POST) 设备的所有权。
从 Windows 8 开始,操作系统在即插即用 (PnP) 停止操作期间调用此函数。
若要向操作系统指示此函数受支持,驱动程序必须在调用 DxgkDdiQueryAdapterInfo 函数时设置 DXGK_DRIVERCAPS 结构的 NonVGASupport 成员。
语法
DXGKDDI_STOP_DEVICE_AND_RELEASE_POST_DISPLAY_OWNERSHIP DxgkddiStopDeviceAndReleasePostDisplayOwnership;
NTSTATUS DxgkddiStopDeviceAndReleasePostDisplayOwnership(
[in] PVOID MiniportDeviceContext,
[in] D3DDDI_VIDEO_PRESENT_TARGET_ID TargetId,
[out] PDXGK_DISPLAY_INFORMATION DisplayInfo
)
{...}
参数
[in] MiniportDeviceContext
与显示适配器关联的上下文块的句柄。 显示微型端口驱动程序的 DxgkDdiAddDevice 函数之前向 Microsoft DirectX 图形内核子系统提供了此句柄。
[in] TargetId
一个 D3DDDI_VIDEO_PRESENT_TARGET_ID 值,该值指定显示设备连接到的显示适配器上存在的视频目标的标识符。 此标识符可以是在上一次调用 DxgkDdiCommitVidPn 期间保留在当前视频当前网络中的目标 (VidPN) 状态。
有关 TargetId 参数使用的详细信息,请参阅以下“备注”部分。
[out] DisplayInfo
指向操作系统分配 的DXGK_DISPLAY_INFORMATION 结构的指针。
返回值
如果成功 , 则返回STATUS_SUCCESS。 否则,它将返回 Ntstatus.h 中定义的错误代码之一。 有关更多信息,请参见下面的“备注”部分。
注解
允许的颜色格式
显示微型端口驱动程序应仅报告 32 位颜色格式。 因此, DisplayInfo->ColorFormat 成员必须仅包含以下两种格式之一:- D3DDDIFMT_X8R8G8B8
- D3DDDIFMT_A8R8G8B8
视频呈现目标初始化
显示微型端口驱动程序必须将 DisplayInfo->TargetId 成员设置为保持活动状态的显示器的目标标识符。 通常,此标识符将是操作系统传递给驱动程序的 TargetId 参数的值。同样,显示微型端口驱动程序必须将 DisplayInfo-AcpiId> 成员设置为保持活动状态的显示器的 ACPI 标识符。
显示微型端口驱动程序所需的步骤
调用其 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 函数时,显示微型端口驱动程序必须遵循以下步骤:- 驱动程序必须停止与 TargetId 参数指示的视频存在目标关联的显示设备,但必须使与此目标关联的显示器保持打开并可见。
- 驱动程序必须检查与此目标关联的显示器的连接性。 如果目标未连接显示器,驱动程序必须完成对此函数的调用并返回 STATUS_NOT_SUPPORTED 错误代码。
- 驱动程序必须禁用连接到显示适配器的所有其他显示器的信号。 如果无法执行此操作,驱动程序应尝试在所有其他显示器上放置一个空白图像。 如果无法执行此操作,驱动程序必须使屏幕上的最后一个图像保持不变。
- 驱动程序必须在指示的目标上保留当前显示模式,并将此模式提供回操作系统作为此函数调用的一部分。
- 如果驱动程序无法保持当前显示模式,或者如果目标不是活动拓扑的一部分,则驱动程序应选择备用活动目标并尝试保持该目标的当前分辨率。 如果这是不可能的,驱动程序应尝试将显示器设置为其本机分辨率或高分辨率模式。 在这种情况下,显示分辨率必须设置为至少 800 x 600 像素 ,D3DDDIFMT_R8G8B8 (24 位/像素) 或 D3DDDIFMT_X8R8G8B8 (32 bpp) D3DDDIFORMAT 枚举的颜色格式。
- 如果没有活动目标,驱动程序应尝试启用目标,最好是内部面板(如果可用)。
- 如果可能,驱动程序必须清除当前帧缓冲区并禁用硬件光标和所有显示覆盖。
- 如果可能,驱动程序必须将设备的伽玛斜坡设置为其默认值。
- 驱动程序必须将当前帧缓冲区设置为线性模式。 驱动程序通过使用默认重排范围或禁用重排模式来执行此操作。
- 驱动程序必须通过将当前帧缓冲区线性映射到 CPU 地址空间,使 CPU 可以访问当前帧缓冲区。
- 驱动程序必须确保所指示目标的可见性设置为“已启用”。
其他要求
在支持统一可扩展固件接口 (UEFI) 的系统上,不存在 VGA 基本输入/输出系统 (BIOS) 。 为了支持这些系统上的 PnP 停止操作,Windows 显示驱动程序模型 (WDDM) 1.2 及更高版本支持操作系统重置 POST 设备并在 PnP 停止操作期间获取其显示信息。 操作系统通过调用显示微型端口驱动程序的 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 函数来执行此操作。PnP 停止操作可以针对设备管理器等进程的请求进行响应,或者在驱动程序升级过程中发生。
从 Windows 8 开始,操作系统仅在 PnP 停止操作期间在 POST 设备上调用驱动程序的 DxgkDdiStopDeviceAndReleasePostDisplayOwnership 函数。
在仅限 UEFI 的系统上,如果显示微型端口驱动程序调用此函数失败,将显示黑屏,并且未安装 IHV 驱动程序。 此方案的解决方法是让用户重启计算机。
有关如何在 PnP 方案中使用此函数的详细信息,请参阅 WDDM 1.2 及更高版本中即插即用 (PnP) 。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 8 |
最低受支持的服务器 | Windows Server 2012 |
目标平台 | 桌面 |
标头 | dispmprt.h |
IRQL | PASSIVE_LEVEL |