Partager via


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)

Voir aussi

pfnReserveGpuVirtualAddressCb

pfnUpdateGpuVirtualAddressCb