共用方式為


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_SPACESize 是指驅動程式所提供的 IO 空間區域大小。

Context

Dxgkrnl 的內容數據指標大小片段會與實體記憶體物件一起儲存,以供偵錯之用。 絕不會以任何方式直接使用或取值 Dxgkrnl。 這可能是驅動程式選擇的任何值,例如擁有此實體記憶體對象的驅動程式擁有物件的記憶體位址。

Type

DXGK_PHYSICAL_MEMORY_TYPE 值,指定要建立的實體記憶體類型。 如果 TypeDXGK_PHYSICAL_MEMORY_TYPE_SECTION,則區段物件的配置屬性一律會SEC_COMMIT (PF 對應區段),而快取類型是由 cacheType 來決定。

CacheType

頁面的快取類型。 如果 TypeDXGK_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

另請參閱

DXGK_PHYSICAL_MEMORY_TYPE

DXGKCB_ALLOCATEADL

DXGKCB_CLOSEPHYSICALMEMORYOBJECT

DXGKCB_CREATEPHYSICALMEMORYOBJECT

DXGKCB_DESTROYPHYSICALMEMORYOBJECT

DXGKCB_OPENPHYSICALMEMORYOBJECT

mmAllocateContiguousMemorySpecifyCache

mmAllocatePagesForMdlEx

ZwCreateSection