Compartir a través de


estructura DXGKARGCB_CREATE_PHYSICAL_MEMORY_OBJECT (d3dkmddi.h)

La estructura DXGKARGCB_CREATE_PHYSICAL_MEMORY_OBJECT contiene la información utilizada por la función de devolución de llamada DXGKCB_CREATEPHYSICALMEMORYOBJECT para crear memoria física.

Sintaxis

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;

Miembros

hAdapter

Adaptador para el que se asociará esta memoria física. Este parámetro es opcional y puede ser NULL. Si es NULL, el controlador debe llamar a DXGKCB_OPENPHYSICALMEMORYOBJECT antes de crear una lista de descriptores de direcciones (ADL). Vea Comentarios para obtener más información.

Size

Tamaño, en bytes, de la memoria física que se solicita. Si tipo es DXGK_PHYSICAL_MEMORY_TYPE_IO_SPACE, tamaño hace referencia al tamaño de la región de espacio de E/S proporcionada por el controlador.

Context

Un fragmento de tamaño de puntero de datos de contexto que dxgkrnl almacenará junto con el objeto de memoria física con fines de depuración. Este valor nunca se usa ni desreferencia directamente Dxgkrnl de ninguna manera. Puede ser cualquier valor de la elección del controlador, como la dirección de memoria de un objeto propiedad del controlador que posee este objeto de memoria física.

Type

Valor DXGK_PHYSICAL_MEMORY_TYPE que especifica el tipo de memoria física que se va a crear. Si type es DXGK_PHYSICAL_MEMORY_TYPE_SECTION, los atributos de asignación del objeto de sección siempre se SEC_COMMIT (sección asignada pf) y el tipo de caché lo determina CacheType.

CacheType

Tipo de caché de las páginas. Si type es DXGK_PHYSICAL_MEMORY_TYPE_SECTION, CacheType debe almacenarse en caché o combinar escritura.

Mdl

Solo se usa cuando de tipo es DXGK_PHYSICAL_MEMORY_TYPE_MDL.

Mdl.LowAddress

Solo se usa cuando de tipo es DXGK_PHYSICAL_MEMORY_TYPE_MDL. Consulte mmAllocatePagesForMdlEx para obtener más información.

Mdl.HighAddress

Solo se usa cuando de tipo es DXGK_PHYSICAL_MEMORY_TYPE_MDL. Consulte mmAllocatePagesForMdlEx para obtener más información.

Mdl.SkipBytes

Solo se usa cuando de tipo es DXGK_PHYSICAL_MEMORY_TYPE_MDL. Consulte mmAllocatePagesForMdlEx para obtener más información.

Mdl.Flags

Solo se usa cuando de tipo es DXGK_PHYSICAL_MEMORY_TYPE_MDL. Consulte mmAllocatePagesForMdlEx para obtener más información.

ContiguousMemory

Solo se usa cuando de tipo es DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY.

ContiguousMemory.LowestAcceptableAddress

Solo se usa cuando de tipo es DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY. Consulte MmAllocateContiguousMemorySpecifyCache para obtener más información.

ContiguousMemory.HighestAcceptableAddress

Solo se usa cuando de tipo es DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY. Consulte MmAllocateContiguousMemorySpecifyCache para obtener más información.

ContiguousMemory.BoundaryAddressMultiple

Solo se usa cuando de tipo es DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY. Consulte MmAllocateContiguousMemorySpecifyCache para obtener más información.

Section

Solo se usa cuando de tipo es DXGK_PHYSICAL_MEMORY_TYPE_SECTION.

Section.DesiredAccess

Solo se usa cuando de tipo es DXGK_PHYSICAL_MEMORY_TYPE_SECTION. Consulte ZwCreateSection para obtener más información.

Section.ObjectAttributes

Solo se usa cuando de tipo es DXGK_PHYSICAL_MEMORY_TYPE_SECTION. Consulte ZwCreateSection para obtener más información.

Section.PageProtection

Solo se usa cuando de tipo es DXGK_PHYSICAL_MEMORY_TYPE_SECTION. Este valor debe ser uno de los siguientes valores: PAGE_READONLY, PAGE_READWRITE, PAGE_EXECUTE o PAGE_WRITECOPY. No especifique atributos de caché (por ejemplo, SEC_WRITECOMBINED) en este campo. Los atributos asignados del objeto de sección siempre se SEC_COMMIT (sección asignada por PF) y el tipo de caché lo determina CacheType. Consulte ZwCreateSection para obtener más información.

Section.AllocationAttributes

Solo se usa cuando de tipo es DXGK_PHYSICAL_MEMORY_TYPE_SECTION. Consulte ZwCreateSection para obtener más información.

IOSpace

Solo se usa cuando de tipo es DXGK_PHYSICAL_MEMORY_TYPE_IO_SPACE.

IOSpace.BaseAddress

Solo se usa cuando de tipo es DXGK_PHYSICAL_MEMORY_TYPE_IO_SPACE. Especifica la dirección física inicial de la región del espacio de E/S. Este valor debe alinearse con un múltiplo de PAGE_SIZE.

hPhysicalMemoryObject

En una llamada correcta a DXGKCB_CREATEPHYSICALMEMORYOBJECT, se trata de un identificador opaco de vuelta a un objeto de memoria física administrado dxgkrnl de. El objeto de memoria física se puede proporcionar a otras funciones de administración de memoria documentadas para asignar una dirección virtual para el acceso a la CPU. Este identificador se puede cerrar llamando a DXGKCB_DESTROYPHYSICALMEMORYOBJECT.

hAdapterMemoryObject

En una llamada correcta a DXGKCB_CREATEPHYSICALMEMORYOBJECT, se trata de un identificador opaco de vuelta a un objeto de memoria del adaptador administrado Dxgkrnl. El objeto de memoria del adaptador se puede proporcionar a otras funciones de administración de memoria documentadas para generar un ADL para el acceso a GPU. Si hAdapter es NULL, este valor será NULL y el controlador debe llamar a DXGKCB_OPENPHYSICALMEMORYOBJECT para crear este identificador. Este identificador se puede cerrar llamando a DXGKCB_CLOSEPHYSICALMEMORYOBJECTo se puede proporcionar a DXGKCB_DESTROYPHYSICALMEMORYOBJECT (pero no a ambos).

Observaciones

El campo hAdapter es opcional al crear un objeto de memoria física, pero ese objeto debe abrirse en un adaptador de una llamada a DXGKCB_OPENPHYSICALMEMORYOBJECT antes de crear un ADL. Esto se debe a que un ADL representa la memoria lógica y cada adaptador lógico tiene un dominio único. No importa en qué adaptador físico se cree la memoria. Se abrirá mediante el adaptador lógico al que pertenece el adaptador físico y se asignará a todos los adaptadores físicos vinculados.

Consulte de reasignación de IOMMU DMA para obtener más información.

Requisitos

Requisito Valor
servidor mínimo admitido Windows Server 2022 (WDDM 2.9)
encabezado de d3dkmddi.h

Consulte también

DXGK_PHYSICAL_MEMORY_TYPE

DXGKCB_ALLOCATEADL

DXGKCB_CLOSEPHYSICALMEMORYOBJECT

DXGKCB_CREATEPHYSICALMEMORYOBJECT

DXGKCB_DESTROYPHYSICALMEMORYOBJECT

DXGKCB_OPENPHYSICALMEMORYOBJECT

MmAllocateContiguousMemorySpecifyCache

MmAllocatePagesForMdlEx

ZwCreateSection