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。
同样常见的情况是,SegmentOffset,SizeInBytes 在某些脏跟踪 DDI 中使用创建内存基础时,将遵循某些页面对齐方式。 这些值在这些 DDI 的引用页上进行描述,并且始终是 DXGK_DIRTY_BIT_TRACKING_SEGMENT_CAPS::P ageSize的倍数。
Dxgkrnl 否则不能保证 Ranges 集合中地址的排序 或相关保证。
有关详细信息,请参阅 脏位跟踪。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 11 版本 24H2 (WDDM 3.2) |
标头 | d3dkmddi.h |
IRQL | PASSIVE_LEVEL |