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
DXGKCB_CLOSEPHYSICALMEMORYOBJECT
DXGKCB_CREATEPHYSICALMEMORYOBJECT
DXGKCB_DESTROYPHYSICALMEMORYOBJECT
DXGKCB_OPENPHYSICALMEMORYOBJECT