DXGK_SEGMENTDESCRIPTOR3结构 (d3dkmddi.h)

DXGK_SEGMENTDESCRIPTOR3 结构包含有关驱动程序支持的段的信息,该段由 BIOS 保留的内存 (在转换为低功耗状态) 和驱动程序保留内存期间清除。

语法

typedef struct _DXGK_SEGMENTDESCRIPTOR3 {
  [out] DXGK_SEGMENTFLAGS Flags;
  [out] PHYSICAL_ADDRESS  BaseAddress;
  [out] PHYSICAL_ADDRESS  CpuTranslatedAddress;
  [out] SIZE_T            Size;
  [out] UINT              NbOfBanks;
  [out] SIZE_T            *pBankRangeTable;
  [out] SIZE_T            CommitLimit;
        SIZE_T            SystemMemoryEndAddress;
        SIZE_T            Reserved;
} DXGK_SEGMENTDESCRIPTOR3;

成员

[out] Flags

一个 DXGK_SEGMENTFLAGS 结构,用于标识段的位字段标志中的属性。

请注意,对于 AGP 类型的光圈段,驱动程序必须在DXGK_SEGMENTFLAGS包含的联合中专门设置结构的 Agp 成员。 尽管 AGP 类型的光圈段是一个光圈并且可供 CPU 访问,但如果设置了任何其他成员,适配器将无法初始化。

[out] BaseAddress

段的基址,由 GPU) 图形处理单元 (确定。 视频内存管理器在段中分页的分配的物理地址分配了一个 GPU 地址,该地址与 BaseAddress 指定的基址相偏移。

视频内存管理器忽略 AGP 类型光圈段的基址, (Agp 位字段标志在 Flags 成员) 指定,而是使用 AGP 光圈内段的实际物理地址,如 GPU 所在的总线上确定的那样。 在这种情况下,驱动程序可以使用视频内存管理器直接为分配而生成的地址,而无需转换。

[out] CpuTranslatedAddress

段的基址,相对于 GPU 连接的总线。 例如,当 GPU 连接到 PCI 总线时, CpuTranslatedAddress 是由 PCI 基址寄存器指定的可用范围的基址 (BAR) 。 仅当驱动程序通过在 Flags 成员中设置 CpuVisible 位字段标志来指定可访问 CPU 的段时,才指定此地址。

对于光圈段(包括 AGP 类型的光圈段),将忽略此成员。 当用户模式显示驱动程序未为主分配设置备用虚拟地址 (即驱动程序在调用 pfnLockCb 函数期间未在D3DDDICB_LOCKFLAGS结构的 Flags 成员中设置 UseAlternateVA 时,会发生唯一的异常) 。

在视频内存管理器将虚拟地址映射到物理范围之前,视频内存管理器会根据总线的 CPU 视图转换此物理地址,并通知驱动程序有关操作的信息,以便驱动程序可以设置一个光圈来访问指定位置段的内容。

[out] Size

段的大小(以字节为单位)。 此大小必须是本机主机页面大小的倍数, (例如,x86 体系结构) 上的 4 KB。

对于 AGP 类型光圈段 (其中 Agp 位字段标志在 Flags 成员) 中指定,视频内存管理器分配尽可能多的光圈空间,因此忽略此成员。

[out] NbOfBanks

段中的银行数(如果使用 banking (即,如果在 Flags 成员) 中设置了 UseBanking 位字段标志。

[out] pBankRangeTable

一个值数组,指示分隔段中每个库的区域。 仅当驱动程序还设置 Flags 成员中的 UseBanking 位字段标志时,驱动程序才指定此数组。

数组通过 NbOfBanks指定第一个银行 (的结束地址,即,每个银行) 的结束偏移量。 注意以下事项:

  • 银行是连续的。

  • 第一个库从段的偏移零开始。

  • 最后一个库在段的末尾结束,因此驱动程序不需要指定最后一个库的结束地址。

[out] CommitLimit

可提交到段的最大字节数。 对于内存段,提交限制始终与 在 Size 成员中指定的段大小相同。 对于光圈段,驱动程序可以限制可提交到具有少量物理内存的系统上段的内存量。

SystemMemoryEndAddress

对于部分由系统内存组成的段,在此地址之后开始的所有分配都会在转换为休眠状态时清除。 完全存在于系统内存中的分配(其中段地址小于或等于 SystemMemoryEndAddress)不会在此转换中逐出。

如果段在转换为休眠状态时部分保留,则显示微型端口驱动程序应将此成员设置为非 NULL 值,在这种情况下,应设置DXGK_SEGMENTFLAGS结构中的 PartiallyPreservedDuringHibernate 成员。

驱动程序预留内存从段地址 0 运行到 SystemMemoryEndAddress(含)。 BIOS 保留的内存从 (SystemMemoryEndAddress+1) 运行到段的末尾。

Reserved

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

注解

WDDM 1.2 或更高版本内核模式显示微型端口驱动程序使用此结构返回有关内存段的信息,以响应 DxgkDdiQueryAdapterInfo 函数调用,其中图形子系统指定DXGKARG_QUERYADAPTERINFO结构的 Type 成员中的DXGKQAITYPE_QUERYSEGMENT3值。

此结构由 DXGK_QUERYSEGMENTOUT3 结构的 pSegmentDescriptor 成员指向。

要求

要求
最低受支持的客户端 Windows 8
最低受支持的服务器 Windows Server 2012
标头 d3dkmddi.h

另请参阅

D3DDDICB_LOCKFLAGS

DXGKARG_QUERYADAPTERINFO

DXGK_QUERYSEGMENTOUT3

DXGK_SEGMENTFLAGS

DxgkDdiQueryAdapterInfo