DXGK_PTE 结构 (d3dukmdt.h)

PTE) (页表条目提供页面的物理地址和其他属性。 PTE 的确切格式取决于硬件实现。

语法

typedef struct _DXGK_PTE {
  union {
    struct {
      ULONGLONG Valid : 1;
      ULONGLONG Zero : 1;
      ULONGLONG CacheCoherent : 1;
      ULONGLONG ReadOnly : 1;
      ULONGLONG NoExecute : 1;
      ULONGLONG Segment : 5;
      ULONGLONG LargePage : 1;
      ULONGLONG PhysicalAdapterIndex : 6;
      ULONGLONG PageTablePageSize : 2;
      ULONGLONG SystemReserved0 : 1;
      ULONGLONG Reserved : 44;
    };
    ULONGLONG Flags;
  };
  union {
    ULONGLONG PageAddress;
    ULONGLONG PageTableAddress;
  };
} DXGK_PTE;

成员

Valid

设置后,这表示该条目有效。 除非设置了 Zero 标志,否则访问无效条目会导致无法恢复的地址错误。

Zero

设置为 Valid = 1 时,对条目的访问会导致返回内存访问的零值。 这用于支持平铺资源。

从 Windows 10 开始支持。

CacheCoherent

设置后,这表示内存页在 CPU 和 GPU 之间缓存一致。

ReadOnly

设置后,这表示内存页是只读的。

NoExecute

设置后,这表示内存页包含数据,不应将其视为可执行命令。

从 Windows 10 开始支持。

Segment

从零开始的 GPU 内存段标识符,对应内存页所在的位置。 段 0 是为系统内存保留的。

LargePage

仅当内核模式驱动程序设置 DXGK_VIRTUALADDRESSCAPS::GpuMmu 时,才能设置 位。LargePageSupported cap。 设置页表地址 (PageTableAddress + SegmentId) 是分配的内存地址。 分配大小等于虚拟地址范围,由较低的页表级别涵盖。 无法为叶页表设置此标志。

从 Windows 10 开始支持。

PhysicalAdapterIndex

在链接的显示适配器配置中定义物理适配器索引。 一个物理适配器上的页表的 PTE 可以指向另一个物理适配器上的内存。

从 Windows 10 开始支持。

PageTablePageSize

对于级别 1 页表条目,定义叶页表 PTE 的页面大小。 该值由 DXGK_PTE_PAGE_SIZE 枚举器提供。 当支持双 PTE 时,应忽略此值。

从 Windows 10 开始支持。

SystemReserved0

Reserved

保留供系统使用,并将设置为零。

Flags

结构的未屏蔽值。

PageAddress

内存页的 64 位物理地址的高 52 位。 低 12 位为零。 地址是段开头的偏移量(由 Segment 或系统内存地址定义)。

PageTableAddress

较低级别页表的 64 位物理地址的高 52 位。 低 12 位为零。 地址是段开头的偏移量(由 Segment 或系统内存地址定义)。

从 Windows 10 开始支持。

要求

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