Partager via


structure DXGKARGCB_CREATE_PHYSICAL_MEMORY_OBJECT (d3dkmddi.h)

La structure DXGKARGCB_CREATE_PHYSICAL_MEMORY_OBJECT contient les informations utilisées par la fonction de rappel DXGKCB_CREATEPHYSICALMEMORYOBJECT pour créer de la mémoire physique.

Syntaxe

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;

Membres

hAdapter

Adaptateur pour lequel cette mémoire physique sera associée. Ce paramètre est facultatif et peut être NULL. S’il s’agit de NULL, le pilote doit appeler DXGKCB_OPENPHYSICALMEMORYOBJECT avant de créer une liste de descripteurs d’adresse (ADL). Pour plus d’informations, consultez les remarques.

Size

Taille, en octets, de la mémoire physique demandée. Si type est DXGK_PHYSICAL_MEMORY_TYPE_IO_SPACE, taille fait référence à la taille de la région d’espace d’E/S fournie par le pilote.

Context

Un élément de contexte de taille pointeur qui Dxgkrnl stockera en même temps que l’objet mémoire physique à des fins de débogage. Cette valeur n’est jamais directement utilisée ou déréférée par Dxgkrnl de quelque manière que ce soit. Il peut s’agir de n’importe quelle valeur du choix du pilote, telle que l’adresse mémoire à un objet appartenant au pilote propriétaire de cet objet mémoire physique.

Type

Valeur DXGK_PHYSICAL_MEMORY_TYPE qui spécifie le type de mémoire physique à créer. Si type est DXGK_PHYSICAL_MEMORY_TYPE_SECTION, les attributs d’allocation de l’objet de section sont toujours SEC_COMMIT (section mappée pf) et le type de cache est déterminé par CacheType.

CacheType

Type de cache des pages. Si type est DXGK_PHYSICAL_MEMORY_TYPE_SECTION, cacheType doit être mis en cache ou combiné en écriture.

Mdl

Utilisé uniquement lorsque type est DXGK_PHYSICAL_MEMORY_TYPE_MDL.

Mdl.LowAddress

Utilisé uniquement lorsque type est DXGK_PHYSICAL_MEMORY_TYPE_MDL. Pour plus d’informations, consultez MmAllocatePagesForMdlEx.

Mdl.HighAddress

Utilisé uniquement lorsque type est DXGK_PHYSICAL_MEMORY_TYPE_MDL. Pour plus d’informations, consultez MmAllocatePagesForMdlEx.

Mdl.SkipBytes

Utilisé uniquement lorsque type est DXGK_PHYSICAL_MEMORY_TYPE_MDL. Pour plus d’informations, consultez MmAllocatePagesForMdlEx.

Mdl.Flags

Utilisé uniquement lorsque type est DXGK_PHYSICAL_MEMORY_TYPE_MDL. Pour plus d’informations, consultez MmAllocatePagesForMdlEx.

ContiguousMemory

Utilisé uniquement lorsque type est DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY.

ContiguousMemory.LowestAcceptableAddress

Utilisé uniquement lorsque type est DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY. Pour plus d’informations, consultez MmAllocateContiguousMemorySpecifyCache.

ContiguousMemory.HighestAcceptableAddress

Utilisé uniquement lorsque type est DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY. Pour plus d’informations, consultez MmAllocateContiguousMemorySpecifyCache.

ContiguousMemory.BoundaryAddressMultiple

Utilisé uniquement lorsque type est DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY. Pour plus d’informations, consultez MmAllocateContiguousMemorySpecifyCache.

Section

Utilisé uniquement lorsque type est DXGK_PHYSICAL_MEMORY_TYPE_SECTION.

Section.DesiredAccess

Utilisé uniquement lorsque type est DXGK_PHYSICAL_MEMORY_TYPE_SECTION. Pour plus d’informations, consultez ZwCreateSection.

Section.ObjectAttributes

Utilisé uniquement lorsque type est DXGK_PHYSICAL_MEMORY_TYPE_SECTION. Pour plus d’informations, consultez ZwCreateSection.

Section.PageProtection

Utilisé uniquement lorsque type est DXGK_PHYSICAL_MEMORY_TYPE_SECTION. Cette valeur doit être l’une des valeurs suivantes : PAGE_READONLY, PAGE_READWRITE, PAGE_EXECUTE ou PAGE_WRITECOPY. Ne spécifiez pas d’attributs de cache (par exemple, SEC_WRITECOMBINED) dans ce champ. Les attributs alloués de l’objet de section sont toujours SEC_COMMIT (section mappée pf), et le type de cache est déterminé par CacheType. Pour plus d’informations, consultez ZwCreateSection.

Section.AllocationAttributes

Utilisé uniquement lorsque type est DXGK_PHYSICAL_MEMORY_TYPE_SECTION. Pour plus d’informations, consultez ZwCreateSection.

IOSpace

Utilisé uniquement lorsque type est DXGK_PHYSICAL_MEMORY_TYPE_IO_SPACE.

IOSpace.BaseAddress

Utilisé uniquement lorsque type est DXGK_PHYSICAL_MEMORY_TYPE_IO_SPACE. Spécifie l’adresse physique de départ de la région d’espace d’E/S. Cette valeur doit être alignée sur un multiple de PAGE_SIZE.

hPhysicalMemoryObject

Lors d’un appel réussi à DXGKCB_CREATEPHYSICALMEMORYOBJECT, il s’agit d’un handle opaque à un objet de mémoire physique managéeDxgkrnl. L’objet mémoire physique peut être fourni à d’autres fonctions de gestion de mémoire documentées pour mapper une adresse virtuelle pour l’accès au processeur. Ce handle peut être fermé en appelant DXGKCB_DESTROYPHYSICALMEMORYOBJECT.

hAdapterMemoryObject

Lors d’un appel réussi à DXGKCB_CREATEPHYSICALMEMORYOBJECT, il s’agit d’un handle opaque vers un objet de mémoire de l’adaptateur managé Dxgkrnl. L’objet mémoire de l’adaptateur peut être fourni à d’autres fonctions de gestion de mémoire documentées pour générer un ADL pour l’accès GPU. Si hAdapter a la valeur NULL, cette valeur est NULL et le pilote doit appeler DXGKCB_OPENPHYSICALMEMORYOBJECT pour créer ce handle. Ce handle peut être fermé en appelant DXGKCB_CLOSEPHYSICALMEMORYOBJECT, ou peut être fourni à DXGKCB_DESTROYPHYSICALMEMORYOBJECT (mais pas les deux).

Remarques

Le champ hAdapter est facultatif lors de la création d’un objet mémoire physique, mais cet objet doit être ouvert sur un adaptateur dans un appel à DXGKCB_OPENPHYSICALMEMORYOBJECT avant qu’un ADL puisse être créé. Cela est dû au fait qu’un ADL représente la mémoire logique et que chaque adaptateur logique a un domaine unique. Il n’importe pas l’adaptateur physique sur lequel la mémoire est créée. Il sera ouvert par l’adaptateur logique auquel appartient l’adaptateur physique et sera mappé à tous les adaptateurs physiques liés.

Pour plus d’informations, consultez de remapping IOMMU DMA.

Exigences

Exigence Valeur
serveur minimum pris en charge Windows Server 2022 (WDDM 2.9)
d’en-tête d3dkmddi.h

Voir aussi

DXGK_PHYSICAL_MEMORY_TYPE

DXGKCB_ALLOCATEADL

DXGKCB_CLOSEPHYSICALMEMORYOBJECT

DXGKCB_CREATEPHYSICALMEMORYOBJECT

DXGKCB_DESTROYPHYSICALMEMORYOBJECT

DXGKCB_OPENPHYSICALMEMORYOBJECT

MmAllocateContiguousMemorySpecifyCache

MmAllocatePagesForMdlEx

ZwCreateSection