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