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,則區段物件的配置屬性一律SEC_COMMIT (PF 對應區段) ,而且快取類型是由 CacheType 決定。
CacheType
頁面的快取類型。 如果 Type 是 DXGK_PHYSICAL_MEMORY_TYPE_SECTION,則 CacheType 必須快取或寫入結合。
Mdl
只有在 Type是DXGK_PHYSICAL_MEMORY_TYPE_MDL時才使用。
Mdl.LowAddress
只有在 Type是DXGK_PHYSICAL_MEMORY_TYPE_MDL時才使用。 如需詳細資訊 ,請參閱 MmAllocatePagesForMdlEx 。
Mdl.HighAddress
只有在 Type是DXGK_PHYSICAL_MEMORY_TYPE_MDL時才使用。 如需詳細資訊 ,請參閱 MmAllocatePagesForMdlEx 。
Mdl.SkipBytes
只有在 Type是DXGK_PHYSICAL_MEMORY_TYPE_MDL時才使用。 如需詳細資訊 ,請參閱 MmAllocatePagesForMdlEx 。
Mdl.Flags
只有在 Type是DXGK_PHYSICAL_MEMORY_TYPE_MDL時才使用。 如需詳細資訊 ,請參閱 MmAllocatePagesForMdlEx 。
ContiguousMemory
只有在 Type是DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY時才使用。
ContiguousMemory.LowestAcceptableAddress
只有在 Type是DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY時才使用。 如需詳細資訊,請參閱 MmAllocateContiguousMemorySpecifyCache 。
ContiguousMemory.HighestAcceptableAddress
只有在 Type是DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY時才使用。 如需詳細資訊,請參閱 MmAllocateContiguousMemorySpecifyCache 。
ContiguousMemory.BoundaryAddressMultiple
只有在 Type是DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY時才使用。 如需詳細資訊,請參閱 MmAllocateContiguousMemorySpecifyCache 。
Section
只有在 Type是DXGK_PHYSICAL_MEMORY_TYPE_SECTION時才使用。
Section.DesiredAccess
只有在 Type是DXGK_PHYSICAL_MEMORY_TYPE_SECTION時才使用。 如需詳細資訊 ,請參閱 ZwCreateSection 。
Section.ObjectAttributes
只有在 Type是DXGK_PHYSICAL_MEMORY_TYPE_SECTION時才使用。 如需詳細資訊 ,請參閱 ZwCreateSection 。
Section.PageProtection
只有在 Type是DXGK_PHYSICAL_MEMORY_TYPE_SECTION時才使用。 此值應該是下列其中一個值:PAGE_READONLY、PAGE_READWRITE、PAGE_EXECUTE或PAGE_WRITECOPY。 請勿 (指定快取屬性,例如此欄位中的SEC_WRITECOMBINED) 。 區段物件的配置屬性一律SEC_COMMIT (PF 對應區段) ,而且快取類型是由 CacheType 決定。 如需詳細資訊 ,請參閱 ZwCreateSection 。
Section.AllocationAttributes
只有在 Type是DXGK_PHYSICAL_MEMORY_TYPE_SECTION時才使用。 如需詳細資訊 ,請參閱 ZwCreateSection 。
IOSpace
只有在 Type是DXGK_PHYSICAL_MEMORY_TYPE_IO_SPACE時才使用。
IOSpace.BaseAddress
只有在 Type是DXGK_PHYSICAL_MEMORY_TYPE_IO_SPACE時才使用。 指定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 字段是選擇性的,但是必須先針對呼叫中的配接器開啟該物件 DXGKCB_OPENPHYSICALMEMORYOBJECT,才能建立 ADL。 這是因為 ADL 代表邏輯記憶體,而且每個邏輯配接器都有唯一的網域。 建立記憶體的實體配接器並不重要。 它將會由實體配接器所屬的邏輯配接器開啟,並對應至所有連結的實體適配卡。
如需詳細資訊,請參閱 IOMMU DMA 重新對應 。
規格需求
需求 | 值 |
---|---|
最低支援的伺服器 | Windows Server 2022 (WDDM 2.9) |
標頭 | d3dkmddi.h |
另請參閱
DXGKCB_CLOSEPHYSICALMEMORYOBJECT
DXGKCB_CREATEPHYSICALMEMORYOBJECT
DXGKCB_DESTROYPHYSICALMEMORYOBJECT
DXGKCB_OPENPHYSICALMEMORYOBJECT