D3DDDI_ESCAPEFLAGS 结构 (d3dukmdt.h)

D3DDDI_ESCAPEFLAGS结构标识用户模式显示驱动程序如何与显示微型端口驱动程序共享信息。

语法

typedef struct _D3DDDI_ESCAPEFLAGS {
  union {
    struct {
      UINT HardwareAccess : 1;
      UINT DeviceStatusQuery : 1;
      UINT ChangeFrameLatency : 1;
      UINT NoAdapterSynchronization : 1;
#if ...
      UINT Reserved : 1;
      UINT VirtualMachineData : 1;
      UINT DriverKnownEscape : 1;
      UINT DriverCommonEscape : 1;
#if ...
      UINT Reserved2 : 24;
#else
      UINT Reserved2 : 26;
#endif
#elif
      UINT Reserved : 28;
#elif
      UINT Reserved : 29;
#else
      UINT Reserved : 31;
#endif
    };
    UINT Value;
  };
} D3DDDI_ESCAPEFLAGS;

成员

HardwareAccess

一个 UINT 值,该值指定操作系统是否对 DxgkDdiEscape 调用的显示微型端口驱动程序执行第二级同步。 如果驱动程序需要第二级同步,并且未设置 HardwareAccess 标志,则对驱动程序的 DxgkDdiEscape 函数的调用应会失败。

从 Windows 8.1 开始,如果设置了此成员,必须将 DeviceStatusQueryChangeFrameLatency 设置为零。

设置此成员等效于设置 32 位 Value 成员 (0x00000001) 的第一位。

DeviceStatusQuery

如果已设置,则调用 pfnEscapeCb 函数并 D3DDDICB_ESCAPEPrivateDriverDataSize 成员为 sizeof(D3DDDI_EXECUTIONSTATEESCAPE),Direct3D 运行时解释 D3DDDICB_ESCAPEpPrivateDriverData 成员作为指向包含 D3DDDI_EXECUTIONSTATEESCAPE 结构的缓冲区的指针。 此外,运行时通过将请求的信息写入提供的缓冲区而不是向显示微型端口驱动程序发送 DxgkDdiEscape 调用,将 pfnEscapeCb 作为状态查询进行处理。

如果设置了此成员,必须将 HardwareAccessChangeFrameLatency 设置为零。

支持从Windows 8.1开始。

如果在Windows 8.1之前,或者用户模式驱动程序是使用 OpenAdapterXxx 调用初始化的,其中 pOpenData-Interface> 成员指示 Direct3D 版本 8 或更早版本,则操作系统将忽略此成员。

设置此成员等效于设置 32 位 Value 成员 (0x00000002) 的第二位。

ChangeFrameLatency

如果设置,则调用 pfnEscapeCb 函数时, D3DDDICB_ESCAPEPrivateDriverDataSize 成员为 sizeof(D3DDDI_FRAMELATENCYESCAPE) ,还满足“备注”中的条件,Direct3D 运行时解释 D3DDDICB_ESCAPEpPrivateDriverData 成员作为指向包含 D3DDDI_FRAMELATENCYESCAPE 结构的缓冲区的指针。 此外,运行时将 pfnEscapeCb 作为请求进行处理,以更改 DirectX 图形内核子系统的最大帧延迟,方法是将请求的信息写入提供的缓冲区,而不是向显示微型端口驱动程序发送 DxgkDdiEscape 调用。

如果设置了此成员,必须将 HardwareAccessDeviceStatusQuery 设置为零。

支持从Windows 8.1开始。

如果在Windows 8.1之前,或者用户模式驱动程序是使用 OpenAdapterXxx 调用初始化的,其中 pOpenData-Interface> 成员指示 Direct3D 版本 8 或更早版本,则操作系统将忽略此成员。

设置此成员等效于设置 32 位 Value 成员 (0x00000004) 的第三位。

NoAdapterSynchronization

Reserved

此成员为保留成员,应设置为零。 将此成员设置为零等效于将 32 位 Value 成员的剩余 29 位 (0xFFFFFFF8) 设置为零。

此成员为保留成员,应设置为零。 将此成员设置为零等效于将 32 位 Value 成员的剩余 31 位 (0xFFFFFFFE) 设置为零。

VirtualMachineData

指示从虚拟机调用 DxgkDdiEscape

DriverKnownEscape

驱动程序专用数据指向已知的结构。

DriverCommonEscape

专用数据点运行时定义的结构。

Reserved2

此成员为保留成员,应设置为零。

Value

包含在 D3DDDI_ESCAPEFLAGS 中的联合成员,可以保存一个标识如何共享信息的 32 位值。

注解

如果设置了 ChangeFrameLatency ,则 pfnEscapeCb 调用仅当:

  • 显示微型端口驱动程序负责链接适配器配置, (单个供应商提供的 LDA) 。
  • 应用在其生存期内的某个时间点对显示器拥有独占全屏所有权。
  • 应用尚未重写默认的最大帧延迟值 3。
如果不满足这些条件, pfnEscapeCb 调用将返回 E_INVALIDARG 错误代码。

要求

要求
最低受支持的客户端 在 Windows Vista 和更高版本的 Windows 操作系统中可用。
标头 d3dukmdt.h (包括 D3dumddi.h、D3dkmddi.h)

另请参阅

D3DDDICB_ESCAPE

D3DDDI_EXECUTIONSTATEESCAPE

D3DDDI_FRAMELATENCYESCAPE

DXGKARG_ESCAPE

DxgkDdiEscape

pfnEscapeCb