DXGKARGCB_CREATE_PHYSICAL_MEMORY_OBJECT 结构 (d3dkmddi.h)
DXGKARGCB_CREATE_PHYSICAL_MEMORY_OBJECT 结构包含DXGKCB_CREATEPHYSICALMEMORYOBJECT回调函数用于创建物理内存的信息。
语法
typedef struct _DXGKARGCB_CREATE_PHYSICAL_MEMORY_OBJECT {
HANDLE hAdapter;
SIZE_T Size;
ULONG_PTR Context;
DXGK_PHYSICAL_MEMORY_TYPE Type;
DXGK_MEMORY_CACHING_TYPE CacheType;
union {
struct {
PHYSICAL_ADDRESS LowAddress;
PHYSICAL_ADDRESS HighAddress;
PHYSICAL_ADDRESS SkipBytes;
UINT Flags;
} Mdl;
struct {
PHYSICAL_ADDRESS LowestAcceptableAddress;
PHYSICAL_ADDRESS HighestAcceptableAddress;
PHYSICAL_ADDRESS BoundaryAddressMultiple;
} ContiguousMemory;
struct {
ACCESS_MASK DesiredAccess;
POBJECT_ATTRIBUTES ObjectAttributes;
ULONG PageProtection;
ULONG AllocationAttributes;
} Section;
struct {
PHYSICAL_ADDRESS BaseAddress;
} IOSpace;
};
HANDLE hPhysicalMemoryObject;
HANDLE hAdapterMemoryObject;
} DXGKARGCB_CREATE_PHYSICAL_MEMORY_OBJECT;
成员
hAdapter
要关联此物理内存的适配器。 此参数是可选的,可以为 NULL。 如果为 NULL,驱动程序必须先调用 DXGKCB_OPENPHYSICALMEMORYOBJECT ,然后才能 (ADL) 创建地址描述符列表。 有关更多信息,请参见备注。
Size
所请求的物理内存的大小(以字节为单位)。 如果 Type为DXGK_PHYSICAL_MEMORY_TYPE_IO_SPACE, 则 Size 是指驱动程序提供的 IO 空间区域的大小。
Context
Dxgkrnl 将用于调试的物理内存对象一起存储的指针大小的上下文数据片段。 Dxgkrnl 绝不会以任何方式直接使用或取消引用此值。 这可能是驱动程序选择的任何值,例如拥有此物理内存对象的驱动程序拥有对象的内存地址。
Type
一个DXGK_PHYSICAL_MEMORY_TYPE值,该值指定要创建的物理内存的类型。 如果 type为DXGK_PHYSICAL_MEMORY_TYPE_SECTION,则 section 对象的分配属性始终SEC_COMMIT (PF 映射的节) ,缓存类型由 CacheType 确定。
CacheType
页面的缓存类型。 如果 Type为DXGK_PHYSICAL_MEMORY_TYPE_SECTION,则 CacheType 必须缓存或写入组合。
Mdl
仅在DXGK_PHYSICAL_MEMORY_TYPE_MDLType 时使用。
Mdl.LowAddress
仅在DXGK_PHYSICAL_MEMORY_TYPE_MDLType 时使用。 有关详细信息,请参阅 MmAllocatePagesForMdlEx 。
Mdl.HighAddress
仅在DXGK_PHYSICAL_MEMORY_TYPE_MDLType 时使用。 有关详细信息,请参阅 MmAllocatePagesForMdlEx 。
Mdl.SkipBytes
仅在DXGK_PHYSICAL_MEMORY_TYPE_MDLType 时使用。 有关详细信息,请参阅 MmAllocatePagesForMdlEx 。
Mdl.Flags
仅在DXGK_PHYSICAL_MEMORY_TYPE_MDLType 时使用。 有关详细信息,请参阅 MmAllocatePagesForMdlEx 。
ContiguousMemory
仅在DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORYType 时才使用。
ContiguousMemory.LowestAcceptableAddress
仅在DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORYType 时才使用。 有关详细信息 ,请参阅 MmAllocateContiguousMemorySpecifyCache 。
ContiguousMemory.HighestAcceptableAddress
仅在DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORYType 时才使用。 有关详细信息 ,请参阅 MmAllocateContiguousMemorySpecifyCache 。
ContiguousMemory.BoundaryAddressMultiple
仅在DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORYType 时才使用。 有关详细信息 ,请参阅 MmAllocateContiguousMemorySpecifyCache 。
Section
仅在类型为DXGK_PHYSICAL_MEMORY_TYPE_SECTION时才使用。
Section.DesiredAccess
仅在类型为DXGK_PHYSICAL_MEMORY_TYPE_SECTION时才使用。 有关详细信息 ,请参阅 ZwCreateSection 。
Section.ObjectAttributes
仅在类型为DXGK_PHYSICAL_MEMORY_TYPE_SECTION时才使用。 有关详细信息 ,请参阅 ZwCreateSection 。
Section.PageProtection
仅在类型为DXGK_PHYSICAL_MEMORY_TYPE_SECTION时才使用。 此值应为下列值之一:PAGE_READONLY、PAGE_READWRITE、PAGE_EXECUTE或PAGE_WRITECOPY。 请勿在此字段中指定缓存属性 (例如SEC_WRITECOMBINED) 。 分区对象的分配属性始终SEC_COMMIT (PF 映射的节) ,缓存类型由 CacheType 确定。 有关详细信息 ,请参阅 ZwCreateSection 。
Section.AllocationAttributes
仅在类型为DXGK_PHYSICAL_MEMORY_TYPE_SECTION时才使用。 有关详细信息 ,请参阅 ZwCreateSection 。
IOSpace
仅在DXGK_PHYSICAL_MEMORY_TYPE_IO_SPACEType 时才使用。
IOSpace.BaseAddress
仅在DXGK_PHYSICAL_MEMORY_TYPE_IO_SPACEType 时才使用。 指定 IO 空间区域的起始物理地址。 此值必须与PAGE_SIZE的倍数对齐。
hPhysicalMemoryObject
成功调用 DXGKCB_CREATEPHYSICALMEMORYOBJECT 时,这是一个返回 Dxgkrnl 托管物理内存对象的不透明句柄。 物理内存对象可以提供给其他记录的内存管理功能,以映射虚拟地址以供 CPU 访问。 可以通过调用 DXGKCB_DESTROYPHYSICALMEMORYOBJECT 来关闭此句柄。
hAdapterMemoryObject
成功调用 DXGKCB_CREATEPHYSICALMEMORYOBJECT 时,这是一个返回 Dxgkrnl 托管适配器内存对象的不透明句柄。 可以将适配器内存对象提供给其他记录的内存管理功能,以生成 ADL 以访问 GPU。 如果 hAdapter 为 NULL,则此值将为 NULL,驱动程序必须调用 DXGKCB_OPENPHYSICALMEMORYOBJECT 来创建此句柄。 此句柄可以通过调用 DXGKCB_CLOSEPHYSICALMEMORYOBJECT关闭,也可以提供给 DXGKCB_DESTROYPHYSICALMEMORYOBJECT ( ,但不能同时) 。
注解
创建物理内存对象时,hAdapter 字段是可选的,但在创建 ADL 之前,必须在调用 DXGKCB_OPENPHYSICALMEMORYOBJECT 时针对适配器打开该对象。 这是因为 ADL 表示逻辑内存,并且每个逻辑适配器都有一个唯一的域。 创建内存时针对哪个物理适配器并不重要。 它将由物理适配器所属的逻辑适配器打开,并映射到所有链接的物理适配器。
有关详细信息 ,请参阅 IOMMU DMA 重新映射 。
要求
要求 | 值 |
---|---|
最低受支持的服务器 | Windows Server 2022 (WDDM 2.9) |
标头 | d3dkmddi.h |
另请参阅
DXGKCB_CLOSEPHYSICALMEMORYOBJECT
DXGKCB_CREATEPHYSICALMEMORYOBJECT
DXGKCB_DESTROYPHYSICALMEMORYOBJECT
DXGKCB_OPENPHYSICALMEMORYOBJECT