D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION struttura (d3dukmdt.h)
D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION descrive un'operazione di aggiornamento degli indirizzi virtuali.
Sintassi
typedef struct _D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION {
D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION_TYPE OperationType;
union {
struct {
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS BaseAddress;
D3DKMT_ALIGN64 D3DGPU_SIZE_T SizeInBytes;
D3DKMT_HANDLE hAllocation;
D3DKMT_ALIGN64 D3DGPU_SIZE_T AllocationOffsetInBytes;
D3DKMT_ALIGN64 D3DGPU_SIZE_T AllocationSizeInBytes;
} Map;
struct {
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS BaseAddress;
D3DKMT_ALIGN64 D3DGPU_SIZE_T SizeInBytes;
D3DKMT_HANDLE hAllocation;
D3DKMT_ALIGN64 D3DGPU_SIZE_T AllocationOffsetInBytes;
D3DKMT_ALIGN64 D3DGPU_SIZE_T AllocationSizeInBytes;
D3DDDIGPUVIRTUALADDRESS_PROTECTION_TYPE Protection;
D3DKMT_ALIGN64 UINT64 DriverProtection;
} MapProtect;
struct {
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS BaseAddress;
D3DKMT_ALIGN64 D3DGPU_SIZE_T SizeInBytes;
D3DDDIGPUVIRTUALADDRESS_PROTECTION_TYPE Protection;
} Unmap;
struct {
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS SourceAddress;
D3DKMT_ALIGN64 D3DGPU_SIZE_T SizeInBytes;
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS DestAddress;
} Copy;
};
} D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION;
Members
OperationType
Map
Esegue il mapping dell'intervallo di indirizzi virtuale specificato all'intervallo di allocazione specificato. L'allocazione non deve essere residente al momento dell'invio o al momento del mapping. La protezione di lettura-scrittura è impostata sulle pagine. DriverProtection per le pagine è impostato su zero.
Map.BaseAddress
Specifica baseAddress dell'intervallo di indirizzi virtuali GPU da aggiornare. Il valore è in byte e deve essere allineato a 4 KB.
L'intero intervallo compreso tra BaseAddress e BaseAddressSizeInBytes deve trovarsi nello stato riservato (zero) o mappato oppure l'operazione pfnUpdateGpuVirtualAddressCb+ avrà esito negativo. Gli intervalli di indirizzi virtuali per tutte le operazioni devono appartenere a un intervallo di indirizzi virtuale riservato dalla stessa chiamata pfnReserveGpuVirtualAddressCb .
Map.SizeInBytes
Specifica le dimensioni, in byte, per l'intervallo da aggiornare. Il valore deve essere allineato a 4 KB.
Map.hAllocation
Specifica l'allocazione a cui deve essere eseguito il mapping dell'intervallo.
Map.AllocationOffsetInBytes
Specifica l'offset, in byte, alla prima pagina dell'allocazione per eseguire il mapping. Il valore deve essere allineato a 4 KB.
Map.AllocationSizeInBytes
Specifica le dimensioni dell'intervallo di allocazione da mappare in byte. Il valore deve essere allineato a 4 KB e deve essere minore di Map.SizeInBytes. Se questo valore è zero, viene usato Map.SizeInBytes .
Quando questo valore è diverso da Map.SizeInBytes, Map.SizeInBytes deve essere un multiplo. In questo caso Gli intervalli di indirizzi virtuali Map.SizeInBytes Map.AllocationSizeInBytes/ verranno mappati allo stesso intervallo di allocazione.
MapProtect
Esegue il mapping dell'intervallo di indirizzi virtuale specificato all'intervallo di allocazione specificato. L'allocazione non deve essere residente al momento dell'invio o al momento del mapping. La protezione della pagina viene specificata nell'operazione.
MapProtect.BaseAddress
Specifica baseAddress dell'intervallo di indirizzi virtuali GPU da aggiornare. Il valore è in byte e deve essere allineato a 4 KB.
L'intero intervallo compreso tra BaseAddress e BaseAddressSizeInBytes deve trovarsi nello stato riservato (zero) o mappato o pfnUpdateGpuVirtualAddressCb+ avrà esito negativo. Gli intervalli di indirizzi virtuali per tutte le operazioni devono appartenere a un intervallo di indirizzi virtuale riservato dalla stessa chiamata pfnReserveGpuVirtualAddressCb .
MapProtect.SizeInBytes
Specifica le dimensioni, in byte, per l'intervallo da aggiornare. Il valore deve essere allineato a 4 KB.
MapProtect.hAllocation
Specifica l'allocazione a cui deve essere eseguito il mapping dell'intervallo.
MapProtect.AllocationOffsetInBytes
Specifica l'offset, in byte, alla prima pagina dell'allocazione per eseguire il mapping. Il valore deve essere allineato a 4 KB.
MapProtect.AllocationSizeInBytes
Specifica le dimensioni dell'intervallo di allocazione da mappare in byte. Il valore deve essere allineato a 4 KB e deve essere minore di Map. SizeInBytes. Se questo valore è zero, viene usato Map.SizeInBytes .
Quando questo valore è minore di Map.SizeInBytes, Map.SizeInBytes deve essere un multiplo. In questo caso Gli intervalli di indirizzi virtuali Map.SizeInBytes Map.AllocationSizeInBytes/ verranno mappati allo stesso intervallo di allocazione.
MapProtect.Protection
Specifica la protezione definita dall'API per le pagine.
MapProtect.DriverProtection
Specifica la protezione specifica del driver per le pagine.
Unmap
Inserisce l'intervallo di indirizzi virtuale specificato sullo stato zero o sullo stato non valido .
Unmap.BaseAddress
Specifica baseAddress dell'intervallo di indirizzi virtuali GPU da inserire nello stato zero . Il valore è in byte e deve essere allineato a 4 KB.
Unmap.SizeInBytes
Specifica le dimensioni, in byte, per liberare l'intervallo. Il valore deve essere allineato a 4 KB.
Unmap.Protection
Definisce lo stato della voce della tabella di pagina dopo il mapping, Zero o NoAccess.
Copy
L'operazione di copia copia tutti i mapping dall'intervallo di indirizzi virtuali GPU di origine all'intervallo di destinazione. Gli intervalli di origine e di destinazione possono intersecarsi. Entrambi gli intervalli devono appartenere a un intervallo di indirizzi virtuali riservato (zero).
BaseAddress
Specifica l'indirizzo virtuale iniziale dell'intervallo di indirizzi virtuali di origine. Il valore è in byte e deve essere allineato a 4 KB.
Copy.SourceAddress
Copy.SizeInBytes
Specifica le dimensioni, in byte, per l'intervallo copiato. Il valore deve essere allineato a 4 KB.
Copy.DestAddress
Specifica l'indirizzo virtuale iniziale dell'intervallo di indirizzi virtuali di destinazione. Il valore è in byte e deve essere allineato a 4 KB.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 10 |
Server minimo supportato | Windows Server 2016 |
Intestazione | d3dukmdt.h (include D3dumddi.h, D3dkmddi.h) |