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

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

支持从Windows 10开始。

CacheCoherent

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

ReadOnly

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

NoExecute

设置时,这表示内存页包含不应被视为可执行命令的数据。

支持从Windows 10开始。

Segment

位于相应内存页的从零开始的 GPU 内存段标识符。 段零为系统内存保留。

LargePage

仅当内核模式驱动程序设置 DXGK_VIRTUALADDRESSCAPS::GpuMmu 时,才能设置位。LargePageSupported 上限。 设置页表地址 (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 操作系统中可用。
Header d3dukmdt.h (包括 D3dkmddi.h)