structure D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION (d3dukmdt.h)
D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION décrit une opération de mise à jour d’adresse virtuelle.
Syntaxe
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;
Membres
OperationType
Map
Mappe la plage d’adresses virtuelles donnée à la plage d’allocation donnée. L’allocation ne doit pas être résidente au moment de la soumission ou au moment du mappage. La protection en lecture-écriture est définie sur les pages. DriverProtection pour les pages a la valeur zéro.
Map.BaseAddress
Spécifie la BaseAddress de la plage d’adresses virtuelles GPU à mettre à jour. La valeur est en octets et doit être alignée à 4 Ko.
L’ensemble de la plage de BaseAddress à BaseAddress+SizeInBytes doit se trouver dans le réservé (zéro) ou mappé état, ou l’opération pfnUpdateGpuVirtualAddressCb échoue. Les plages d’adresses virtuelles pour toutes les opérations doivent appartenir à une plage d’adresses virtuelle qui est réservée par le même appel pfnReserveGpuVirtualAddressCb.
Map.SizeInBytes
Spécifie la taille, en octets, pour la plage mise à jour. La valeur doit être alignée à 4 Ko.
Map.hAllocation
Spécifie l’allocation à qui la plage doit être mappée.
Map.AllocationOffsetInBytes
Spécifie le décalage, en octets, à la première page de l’allocation à mapper. La valeur doit être alignée à 4 Ko.
Map.AllocationSizeInBytes
Spécifie la taille de la plage d’allocation à mapper, en octets. La valeur doit être alignée à 4 Ko et doit être inférieure à Map.SizeInBytes. Si cette valeur est égale à zéro, map.SizeInBytes est utilisé.
Lorsque cette valeur est supérieure à Map.SizeInBytes, Map.SizeInBytes doit être un multiple. Dans ce cas, Map.SizeInBytes/Map.AllocationSizeInBytes plages d’adresses virtuelles seront mappées à la même plage d’allocation.
MapProtect
Mappe la plage d’adresses virtuelles donnée à la plage d’allocation donnée. L’allocation ne doit pas être résidente au moment de la soumission ou au moment du mappage. La protection de page est spécifiée dans l’opération.
MapProtect.BaseAddress
Spécifie la BaseAddress de la plage d’adresses virtuelles GPU à mettre à jour. La valeur est en octets et doit être alignée à 4 Ko.
L’ensemble de la plage de BaseAddress à +SizeInBytes doit se trouver dans le réservé ou 'état mappé, ou pfnUpdateGpuVirtualAddressCb échoue. Les plages d’adresses virtuelles pour toutes les opérations doivent appartenir à une plage d’adresses virtuelle qui est réservée par le même appel pfnReserveGpuVirtualAddressCb.
MapProtect.SizeInBytes
Spécifie la taille, en octets, pour la plage mise à jour. La valeur doit être alignée à 4 Ko.
MapProtect.hAllocation
Spécifie l’allocation à qui la plage doit être mappée.
MapProtect.AllocationOffsetInBytes
Spécifie le décalage, en octets, à la première page de l’allocation à mapper. La valeur doit être alignée à 4 Ko.
MapProtect.AllocationSizeInBytes
Spécifie la taille de la plage d’allocation à mapper, en octets. La valeur doit être alignée à 4 Ko et doit être inférieure à Map.SizeInBytes. Si cette valeur est égale à zéro, map.SizeInBytes est utilisé.
Lorsque cette valeur est inférieure à Map.SizeInBytes, Map.SizeInBytes doit être un multiple. Dans ce cas, Map.SizeInBytes/Map.AllocationSizeInBytes plages d’adresses virtuelles seront mappées à la même plage d’allocation.
MapProtect.Protection
Spécifie la protection définie par l’API pour les pages.
MapProtect.DriverProtection
Spécifie la protection spécifique du pilote pour les pages.
Unmap
Place la plage d’adresses virtuelle spécifiée à l’état zéro ou à l’état non valide.
Unmap.BaseAddress
Spécifie le BaseAddress de la plage d’adresses virtuelles GPU pour revenir à l’état zéro. La valeur est en octets et doit être alignée à 4 Ko.
Unmap.SizeInBytes
Spécifie la taille, en octets, pour que la plage soit libérée. La valeur doit être alignée à 4 Ko.
Unmap.Protection
Définit l’état d’entrée de la table de page après le mappage, Zéro ou NoAccess.
Copy
L’opération de copie copie tous les mappages de la plage d’adresses virtuelles GPU source vers la plage de destination. Les plages source et de destination sont autorisées à se croiser. Les deux plages doivent appartenir à une plage d’adresses virtuelles réservée (zéro).
BaseAddress
Spécifie l’adresse virtuelle de début de la plage d’adresses virtuelle source. La valeur est en octets et doit être alignée à 4 Ko.
Copy.SourceAddress
Copy.SizeInBytes
Spécifie la taille, en octets, de la plage copiée. La valeur doit être alignée à 4 Ko.
Copy.DestAddress
Spécifie l’adresse virtuelle de début de la plage d’adresses virtuelles de destination. La valeur est en octets et doit être alignée à 4 Ko.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 10 |
serveur minimum pris en charge | Windows Server 2016 |
d’en-tête | d3dukmdt.h (include D3dumddi.h, D3dkmddi.h) |