DXGKDDI_SYSTEM_DISPLAY_WRITE回调函数 (dispmprt.h)

由作系统调用以请求显示微型端口驱动程序将图像块写入显示设备。

从 Windows 8 开始,作系统在出现系统停止错误后在 bug 检查作期间调用此函数。 仅当显示设备之前通过调用 dxgkDdiSystemDisplayEnable重置显示设备时,作系统才会调用此函数。

语法

DXGKDDI_SYSTEM_DISPLAY_WRITE DxgkddiSystemDisplayWrite;

void DxgkddiSystemDisplayWrite(
  [in] PVOID MiniportDeviceContext,
  [in] PVOID Source,
  [in] UINT SourceWidth,
  [in] UINT SourceHeight,
  [in] UINT SourceStride,
  [in] UINT PositionX,
  [in] UINT PositionY
)
{...}

参数

[in] MiniportDeviceContext

与显示适配器关联的上下文块的句柄。 显示微型端口驱动程序的 DxgkDdiAddDevice 函数以前向 Microsoft DirectX 图形内核子系统提供了此句柄。

[in] Source

指向要写入 bug 检查屏幕的源图像的起始地址的指针,该屏幕显示有关系统停止错误的信息。

[in] SourceWidth

一个 UINT 值,该值指定指定源图像的宽度(以像素为单位)。

[in] SourceHeight

一个 UINT 值,该值指定指定源图像的高度(以像素为单位)。

[in] SourceStride

一个 UINT 值,该值指定指定源图像的每一行的字节数。

[in] PositionX

一个 UINT 值,该值指定应在显示设备上写入指定源图像的起始 X 坐标。

[in] PositionY

一个 UINT 值,该值指定应在显示设备上写入指定源图像的起始 Y 坐标。

返回值

没有

言论

源图像限制

调用其 DxgkDdiSystemDisplayWrite 函数时,显示微型端口驱动程序必须遵循以下准则:
  • 源图像的颜色格式始终采用 D3DDDIFORMAT 枚举的 D3DDDIFMT_R8G8B8(每像素 24 位)或 D3DDDIFMT_A8R8G8B8 (32 bpp) 格式。 调用其 DxgkDdiSystemDisplayEnable 时,显示微型端口驱动程序以前已设置显示模式以启用此格式的写入作。
  • 源图像位于非分页内存中。 显示微型端口驱动程序应将此源图像写入当前帧缓冲区,从 PostionX 指定的位置开始,并 PositionY 参数。
  • 显示微型端口驱动程序应使用 CPU 将图像块写入帧缓冲区。 当系统遇到停止错误时,它可能是由显示设备上的连续超时检测和恢复(TDR)引起的。 在这种情况下,图形处理单元(GPU)可能处于未知状态。

    有关 TDR 的详细信息,请参阅 超时检测和恢复(TDR)

使用非分页内存

调用此函数时,Windows 内核模式函数可能不可用。

DxgkDdiSystemDisplayWrite 可在任何 IRQL 上调用,因此它必须位于不可分页的内存中。 DxgkDdiSystemDisplayWrite 不得调用任何在可分页内存中的代码,并且不得作可分页内存中的任何数据。

要求

要求 价值
最低支持的客户端 Windows 8
支持的最低服务器 Windows Server 2012
目标平台 桌面
标头 dispmprt.h
IRQL 任何级别 (请参阅“备注”部分)

另请参阅

DxgkCbAcquirePostDisplayOwnership

DxgkDdiAddDevice

DxgkDdiStopDeviceAndReleasePostDisplayOwnership

DxgkDdiSystemDisplayEnable