D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION structure (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 n’a pas besoin d’ê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 est défini sur 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 sur 4 Ko.
L’ensemble de la plage de BaseAddress à BaseAddress+SizeInBytes doit être à l’état réservé (zéro) ou mappé , sinon l’opération pfnUpdateGpuVirtualAddressCb échoue. Les plages d’adresses virtuelles pour toutes les opérations doivent appartenir à une plage d’adresses virtuelles réservée par le même appel pfnReserveGpuVirtualAddressCb .
Map.SizeInBytes
Spécifie la taille, en octets, de la plage en cours de mise à jour. La valeur doit être alignée sur 4 Ko.
Map.hAllocation
Spécifie l’allocation à laquelle la plage doit être mappée.
Map.AllocationOffsetInBytes
Spécifie le décalage, en octets, vers la première page de l’allocation à mapper. La valeur doit être alignée sur 4 Ko.
Map.AllocationSizeInBytes
Spécifie la taille de la plage d’allocation à mapper, en octets. La valeur doit être alignée de 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, les plages d’adresses virtuelles Map.SizeInBytes/Map.AllocationSizeInBytes 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 n’a pas besoin d’ê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 sur 4 Ko.
L’ensemble de la plage de BaseAddress à BaseAddress+SizeInBytes doit être à l’état réservé (zéro) ou mappé , sinon pfnUpdateGpuVirtualAddressCb échouera. Les plages d’adresses virtuelles pour toutes les opérations doivent appartenir à une plage d’adresses virtuelles réservée par le même appel pfnReserveGpuVirtualAddressCb .
MapProtect.SizeInBytes
Spécifie la taille, en octets, de la plage en cours de mise à jour. La valeur doit être alignée sur 4 Ko.
MapProtect.hAllocation
Spécifie l’allocation à laquelle la plage doit être mappée.
MapProtect.AllocationOffsetInBytes
Spécifie le décalage, en octets, vers la première page de l’allocation à mapper. La valeur doit être alignée sur 4 Ko.
MapProtect.AllocationSizeInBytes
Spécifie la taille de la plage d’allocation à mapper, en octets. La valeur doit être alignée de 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, les plages d’adresses virtuelles Map.SizeInBytes/Map.AllocationSizeInBytes 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 au pilote pour les pages.
Unmap
Place la plage d’adresses virtuelles spécifiée à l’état zéro ou à l’état non valide .
Unmap.BaseAddress
Spécifie la BaseAddress de la plage d’adresses virtuelles GPU à remettre à l’état zéro . La valeur est en octets et doit être alignée sur 4 Ko.
Unmap.SizeInBytes
Spécifie la taille, en octets, de la plage à libérer. La valeur doit être alignée sur 4 Ko.
Unmap.Protection
Définit est l’état d’entrée de la table de pages après l’annulation du 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 virtuelles source. La valeur est en octets et doit être alignée sur 4 Ko.
Copy.SourceAddress
Copy.SizeInBytes
Spécifie la taille, en octets, de la plage copiée. La valeur doit être alignée sur 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 sur 4 Ko.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 10 |
Serveur minimal pris en charge | Windows Server 2016 |
En-tête | d3dukmdt.h (include D3dumddi.h, D3dkmddi.h) |