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。

言论

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

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

要求

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

另请参阅

DXGK_ACCESS_MODE

DXGKCB_MAPPHYSICALMEMORY