Condividi tramite


DXGKARGCB_CREATE_PHYSICAL_MEMORY_OBJECT struttura (d3dkmddi.h)

La struttura DXGKARGCB_CREATE_PHYSICAL_MEMORY_OBJECT contiene le informazioni usate dalla funzione di callback DXGKCB_CREATEPHYSICALMEMORYOBJECT per creare memoria fisica.

Sintassi

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;

Members

hAdapter

Adattatore per il quale verrà associata questa memoria fisica. Questo parametro è facoltativo e può essere NULL. Se è NULL, il driver deve chiamare DXGKCB_OPENPHYSICALMEMORYOBJECT prima di creare un elenco di descrittori di indirizzi (ADL). Per ulteriori informazioni, vedere la sezione Osservazioni.

Size

Dimensioni, in byte, della memoria fisica richiesta. Se Type è DXGK_PHYSICAL_MEMORY_TYPE_IO_SPACE, le dimensioni si riferiscono alle dimensioni dell'area dello spazio I/O fornita dal driver.

Context

Un elemento di dimensioni puntatore dei dati di contesto che Dxgkrnl archivierà insieme all'oggetto memoria fisica a scopo di debug. Questo valore non viene mai usato direttamente o dereferenziato da Dxgkrnl in qualsiasi modo. Questo può essere qualsiasi valore della scelta del driver, ad esempio l'indirizzo di memoria a un oggetto di proprietà del driver proprietario di questo oggetto di memoria fisica.

Type

Valore DXGK_PHYSICAL_MEMORY_TYPE che specifica il tipo di memoria fisica da creare. Se Type è DXGK_PHYSICAL_MEMORY_TYPE_SECTION, gli attributi di allocazione dell'oggetto sezione sono sempre SEC_COMMIT (sezione mappata da PF) e il tipo di cache viene determinato da CacheType.

CacheType

Tipo di cache delle pagine. Se Type è DXGK_PHYSICAL_MEMORY_TYPE_SECTION, CacheType deve essere memorizzato nella cache o combinato in scrittura.

Mdl

Usato solo quando Type è DXGK_PHYSICAL_MEMORY_TYPE_MDL.

Mdl.LowAddress

Usato solo quando Type è DXGK_PHYSICAL_MEMORY_TYPE_MDL. Per informazioni dettagliate, vedere MmAllocatePagesForMdlEx .

Mdl.HighAddress

Usato solo quando Type è DXGK_PHYSICAL_MEMORY_TYPE_MDL. Per informazioni dettagliate, vedere MmAllocatePagesForMdlEx .

Mdl.SkipBytes

Usato solo quando Type è DXGK_PHYSICAL_MEMORY_TYPE_MDL. Per informazioni dettagliate, vedere MmAllocatePagesForMdlEx .

Mdl.Flags

Usato solo quando Type è DXGK_PHYSICAL_MEMORY_TYPE_MDL. Per informazioni dettagliate, vedere MmAllocatePagesForMdlEx .

ContiguousMemory

Usato solo quando Type è DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY.

ContiguousMemory.LowestAcceptableAddress

Usato solo quando Type è DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY. Per informazioni dettagliate, vedere MmAllocateContiguousMemorySpecifyCache .

ContiguousMemory.HighestAcceptableAddress

Usato solo quando Type è DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY. Per informazioni dettagliate, vedere MmAllocateContiguousMemorySpecifyCache .

ContiguousMemory.BoundaryAddressMultiple

Usato solo quando Type è DXGK_PHYSICAL_MEMORY_TYPE_CONTIGUOUS_MEMORY. Per informazioni dettagliate, vedere MmAllocateContiguousMemorySpecifyCache .

Section

Usato solo quando Type è DXGK_PHYSICAL_MEMORY_TYPE_SECTION.

Section.DesiredAccess

Usato solo quando Type è DXGK_PHYSICAL_MEMORY_TYPE_SECTION. Per informazioni dettagliate, vedere ZwCreateSection .

Section.ObjectAttributes

Usato solo quando Type è DXGK_PHYSICAL_MEMORY_TYPE_SECTION. Per informazioni dettagliate, vedere ZwCreateSection .

Section.PageProtection

Usato solo quando Type è DXGK_PHYSICAL_MEMORY_TYPE_SECTION. Questo valore deve essere uno dei valori seguenti: PAGE_READONLY, PAGE_READWRITE, PAGE_EXECUTE o PAGE_WRITECOPY. Non specificare gli attributi della cache (ad esempio SEC_WRITECOMBINED) in questo campo. Gli attributi allocati dell'oggetto sezione sono sempre SEC_COMMIT (sezione mappata da PF) e il tipo di cache viene determinato da CacheType. Per informazioni dettagliate, vedere ZwCreateSection .

Section.AllocationAttributes

Usato solo quando Type è DXGK_PHYSICAL_MEMORY_TYPE_SECTION. Per informazioni dettagliate, vedere ZwCreateSection .

IOSpace

Usato solo quando Type è DXGK_PHYSICAL_MEMORY_TYPE_IO_SPACE.

IOSpace.BaseAddress

Usato solo quando Type è DXGK_PHYSICAL_MEMORY_TYPE_IO_SPACE. Specifica l'indirizzo fisico iniziale dell'area spazio I/O. Questo valore deve essere allineato a un multiplo di PAGE_SIZE.

hPhysicalMemoryObject

In una chiamata riuscita a DXGKCB_CREATEPHYSICALMEMORYOBJECT, si tratta di un handle opaco di nuovo in un oggetto di memoria fisica gestita da Dxgkrnl. L'oggetto memoria fisica può essere fornito ad altre funzioni di gestione della memoria documentate per eseguire il mapping di un indirizzo virtuale per l'accesso alla CPU. Questo handle può essere chiuso chiamando DXGKCB_DESTROYPHYSICALMEMORYOBJECT.

hAdapterMemoryObject

In una chiamata riuscita a DXGKCB_CREATEPHYSICALMEMORYOBJECT, si tratta di un handle opaco di nuovo in un oggetto di memoria della scheda gestita da Dxgkrnl. L'oggetto memoria adattatore può essere fornito ad altre funzioni di gestione della memoria documentate per generare un ADL per l'accesso alla GPU. Se hAdapter è NULL, questo valore sarà NULL e il driver deve chiamare DXGKCB_OPENPHYSICALMEMORYOBJECT per creare questo handle. Questo handle può essere chiuso chiamando DXGKCB_CLOSEPHYSICALMEMORYOBJECT o può essere fornito per DXGKCB_DESTROYPHYSICALMEMORYOBJECT (ma non entrambi).

Commenti

Il campo hAdapter è facoltativo quando si crea un oggetto di memoria fisica, ma tale oggetto deve essere aperto su una scheda in una chiamata a DXGKCB_OPENPHYSICALMEMORYOBJECT prima che sia possibile creare un OGGETTO ADL. Si tratta del fatto che un ADL rappresenta la memoria logica e ogni scheda logica ha un dominio univoco. Non importa a quale adattatore fisico viene creata la memoria. Verrà aperto dalla scheda logica a cui appartiene l'adattatore fisico e verrà eseguito il mapping a tutte le schede fisiche collegate.

Per altre informazioni, vedere Remapping di IOMMU DMA .

Requisiti

Requisito Valore
Server minimo supportato Windows Server 2022 (WDDM 2.9)
Intestazione d3dkmddi.h

Vedi anche

DXGK_PHYSICAL_MEMORY_TYPE

DXGKCB_ALLOCATEADL

DXGKCB_CLOSEPHYSICALMEMORYOBJECT

DXGKCB_CREATEPHYSICALMEMORYOBJECT

DXGKCB_DESTROYPHYSICALMEMORYOBJECT

DXGKCB_OPENPHYSICALMEMORYOBJECT

MmAllocateContiguousMemorySpecifyCache

MmAllocatePagesForMdlEx

ZwCreateSection