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
所要求的物理記憶體大小,以位元組為單位。 如果 類型 是 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
只有在類型 為 DXGK_PHYSICAL_MEMORY_TYPE_MDL時才使用。
Mdl.LowAddress
只有在類型 為 DXGK_PHYSICAL_MEMORY_TYPE_MDL時才使用。 如需詳細資訊,請參閱 mmAllocatePagesForMdlEx。
Mdl.HighAddress
只有在類型 為 DXGK_PHYSICAL_MEMORY_TYPE_MDL時才使用。 如需詳細資訊,請參閱 mmAllocatePagesForMdlEx。
Mdl.SkipBytes
只有在類型 為 DXGK_PHYSICAL_MEMORY_TYPE_MDL時才使用。 如需詳細資訊,請參閱 mmAllocatePagesForMdlEx。
Mdl.Flags
只有在類型 為 DXGK_PHYSICAL_MEMORY_TYPE_MDL時才使用。 如需詳細資訊,請參閱 mmAllocatePagesForMdlEx。
ContiguousMemory
只有在類型 DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY時才使用。
ContiguousMemory.LowestAcceptableAddress
只有在類型 DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY時才使用。 如需詳細資訊,請參閱 mmAllocateContiguousMemorySpecifyCache。
ContiguousMemory.HighestAcceptableAddress
只有在類型 DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY時才使用。 如需詳細資訊,請參閱 mmAllocateContiguousMemorySpecifyCache。
ContiguousMemory.BoundaryAddressMultiple
只有在類型 DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY時才使用。 如需詳細資訊,請參閱 mmAllocateContiguousMemorySpecifyCache。
Section
只有在 TypeDXGK_PHYSICAL_MEMORY_TYPE_SECTION時才使用。
Section.DesiredAccess
只有在 TypeDXGK_PHYSICAL_MEMORY_TYPE_SECTION時才使用。 如需詳細資訊,請參閱 ZwCreateSection。
Section.ObjectAttributes
只有在 TypeDXGK_PHYSICAL_MEMORY_TYPE_SECTION時才使用。 如需詳細資訊,請參閱 ZwCreateSection。
Section.PageProtection
只有在 TypeDXGK_PHYSICAL_MEMORY_TYPE_SECTION時才使用。 此值應該是下列其中一個值:PAGE_READONLY、PAGE_READWRITE、PAGE_EXECUTE或PAGE_WRITECOPY。 請勿在此欄位中指定快取屬性(例如SEC_WRITECOMBINED)。 區段物件的已配置屬性一律SEC_COMMIT (PF 對應區段),而快取類型是由快取Type 來決定。 如需詳細資訊,請參閱 ZwCreateSection。
Section.AllocationAttributes
只有在 TypeDXGK_PHYSICAL_MEMORY_TYPE_SECTION時才使用。 如需詳細資訊,請參閱 ZwCreateSection。
IOSpace
只有在類型 DXGK_PHYSICAL_MEMORY_TYPE_IO_SPACE時才使用。
IOSpace.BaseAddress
只有在類型 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