DXGKDDI_CREATEMEMORYBASIS回调函数 (d3dkmddi.h)

KMD 的 DxgkDdiCreateMemoryBasis 函数为内存范围的集合创建句柄,该句柄表示在脏位跟踪期间正在作的分配。

语法

DXGKDDI_CREATEMEMORYBASIS DxgkddiCreatememorybasis;

HANDLE DxgkddiCreatememorybasis(
  IN_CONST_HANDLE hAdapter,
  IN_CONST_PDXGKARG_CREATEMEMORYBASIS pArgs
)
{...}

参数

hAdapter

[in]与显示适配器关联的上下文块的句柄。 KMD 以前提供了此句柄,用于在 MiniportDeviceContextDxgiDdiAddDevice 函数的输出参数中 Dxgkrnl

pArgs

[in]指向 DXGKARG_CREATEMEMORYBASIS 结构的指针,该结构包含所创建的基础的信息。

返回值

DxgkDdiCreateMemoryBasis 返回 KMD 用于跟踪范围集合的 HANDLE。 KMD 应能够在后续命令(如 DxgkDdiDestroyMemoryBasis)中将此信息转换为基础信息。

言论

跟踪 VRAM 上的修改作适用于可能不连续支持的分配。 因此,在跟踪脏位中表示的物理地址由表示正在作的分配的范围集合组成。 DxgkDdiCreateMemoryBasis 返回 KMD 用于跟踪这些范围的引用的句柄。

KMD 可以依赖于以下固定项:

  • 对于 范围中的每个范围,SegmentOffset 和 (SegmentOffset + SizeInBytes - 1)表示 SegmentId引用的段的有效地址。

  • 所有 范围 是成对的不相交;也就是说,任何两个范围之间的交集始终为 null。

同样常见的情况是,SegmentOffsetSizeInBytes 在某些脏跟踪 DDI 中使用创建内存基础时,将遵循某些页面对齐方式。 这些值在这些 DDI 的引用页上进行描述,并且始终是 DXGK_DIRTY_BIT_TRACKING_SEGMENT_CAPS::P ageSize的倍数。

Dxgkrnl 否则不能保证 Ranges 集合中地址的排序 或相关保证。

有关详细信息,请参阅 脏位跟踪

要求

要求 价值
最低支持的客户端 Windows 11 版本 24H2 (WDDM 3.2)
标头 d3dkmddi.h
IRQL PASSIVE_LEVEL

另请参阅

DXGKARG_CREATEMEMORYBASIS

DxgkDdiDestroyMemoryBasis