DXGKARGCB_MAP_PHYSICAL_MEMORY 结构 (d3dkmddi.h)

DXGKARGCB_MAP_PHYSICAL_MEMORY 结构包含DXGKCB_MAPPHYSICALMEMORY回调函数用于将 CPU 可见的虚拟地址映射到基础物理内存的信息。

语法

typedef struct _DXGKARGCB_MAP_PHYSICAL_MEMORY {
  [in]     HANDLE           hPhysicalMemoryObject;
  [in]     DXGK_ACCESS_MODE AccessMode;
  [in/out] SIZE_T           Offset;
  [in]     SIZE_T           Size;
  [out]    void             *pMappedAddress;
} DXGKARGCB_MAP_PHYSICAL_MEMORY;

成员

[in] hPhysicalMemoryObject

描述要映射的基础物理页的物理内存对象。 此对象是在之前对 DXGKCB_CREATEPHYSICALMEMORYOBJECT 的调用中创建

[in] AccessMode

一个DXGK_ACCESS_MODE枚举值,该值描述应为其进行映射 (用户模式或内核模式) 访问模式。

[in/out] Offset

作为输入,指定物理内存对象起始位置的偏移量(以字节为单位)。 作为输出,指定从所请求数据所在的映射基址开始处的偏移量(以字节为单位)。 有关更多信息,请参见备注。

[in] Size

作为输入,指定所映射区域的请求大小(以字节为单位)。 作为输出,指定实际映射大小(以字节为单位)。 有关更多信息,请参见备注。

[out] pMappedAddress

成功调用 DXGKCB_MAPPHYSICALMEMORY 后,这是指向基础物理内存映射的指针。 如果需要舍入或对齐,映射的内存范围的开始可能不完全等于驱动程序请求的偏移量。 因此, Offset 的输出值是指从基址到驱动程序请求的数据的偏移量。 也就是说,ActualAddress = BaseAddress + Offset。

注解

OffsetSize 都是输入和输出参数。 作为输入,它们描述调用方请求的物理内存区域。 在输出中,它们描述实际的映射视图。 这是因为映射到相应物理内存的地址可能不完全位于请求的偏移量处。 调用方请求的实际数据将等于 pMappedAddress + Offset。 映射的虚拟地址范围的大小将是 Size 的输出值,该值可能大于请求的大小。

有关详细信息 ,请参阅 IOMMU DMA 重新映射

要求

要求
最低受支持的服务器 Windows Server 2022 (WDDM 2.9)
标头 d3dkmddi.h

另请参阅

DXGK_ACCESS_MODE

DXGKCB_MAPPHYSICALMEMORY