Compartir a través de


estructura D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION (d3dukmdt.h)

D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION describe una operación de actualización de direcciones virtuales.

Sintaxis

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;

Miembros

OperationType

Map

Asigna el intervalo de direcciones virtuales especificado al intervalo de asignación especificado. La asignación no tiene que ser residente en el momento del envío o en el momento de la asignación. La protección de lectura y escritura se establece en las páginas. DriverProtection para las páginas se establece en cero.

Map.BaseAddress

Especifica la baseAddress del intervalo de direcciones virtuales de GPU que se va a actualizar. El valor está en bytes y debe estar alineado con 4 KB.

El intervalo completo de BaseAddress a BaseAddress+SizeInBytes debe estar en el estado reservado (cero) o asignado , o se producirá un error en la operación pfnUpdateGpuVirtualAddressCb . Los intervalos de direcciones virtuales para todas las operaciones deben pertenecer a un intervalo de direcciones virtuales que está reservado por la misma llamada pfnReserveGpuVirtualAddressCb .

Map.SizeInBytes

Especifica el tamaño, en bytes, para el intervalo que se va a actualizar. El valor debe estar alineado a 4 KB.

Map.hAllocation

Especifica la asignación a la que debe asignarse el intervalo.

Map.AllocationOffsetInBytes

Especifica el desplazamiento, en bytes, en la primera página de la asignación que se va a asignar. El valor debe estar alineado a 4 KB.

Map.AllocationSizeInBytes

Especifica el tamaño del intervalo de asignación que se va a asignar, en bytes. El valor debe estar alineado a 4 KB y debe ser menor que Map.SizeInBytes. Si este valor es cero, se usa Map.SizeInBytes .

Cuando este valor es que Map.SizeInBytes, Map.SizeInBytes debe ser un múltiplo. En este caso , Map.SizeInBytes/Map.AllocationSizeInBytes los intervalos de direcciones virtuales se asignarán al mismo intervalo de asignación.

MapProtect

Asigna el intervalo de direcciones virtuales especificado al intervalo de asignación especificado. La asignación no tiene que ser residente en el momento del envío o en el momento de la asignación. La protección de páginas se especifica en la operación.

MapProtect.BaseAddress

Especifica la baseAddress del intervalo de direcciones virtuales de GPU que se va a actualizar. El valor está en bytes y debe estar alineado con 4 KB.

El intervalo completo de BaseAddress a BaseAddress+SizeInBytes debe estar en el estado reservado (cero) o asignado , o se producirá un error en pfnUpdateGpuVirtualAddressCb . Los intervalos de direcciones virtuales para todas las operaciones deben pertenecer a un intervalo de direcciones virtuales que está reservado por la misma llamada pfnReserveGpuVirtualAddressCb .

MapProtect.SizeInBytes

Especifica el tamaño, en bytes, para el intervalo que se va a actualizar. El valor debe estar alineado a 4 KB.

MapProtect.hAllocation

Especifica la asignación a la que debe asignarse el intervalo.

MapProtect.AllocationOffsetInBytes

Especifica el desplazamiento, en bytes, en la primera página de la asignación que se va a asignar. El valor debe estar alineado a 4 KB.

MapProtect.AllocationSizeInBytes

Especifica el tamaño del intervalo de asignación que se va a asignar, en bytes. El valor debe estar alineado con 4 KB y debe ser menor que Map. SizeInBytes. Si este valor es cero, se usa Map.SizeInBytes .

Cuando este valor es menor que Map.SizeInBytes, Map.SizeInBytes debe ser un múltiplo. En este caso , Map.SizeInBytes/Map.AllocationSizeInBytes los intervalos de direcciones virtuales se asignarán al mismo intervalo de asignación.

MapProtect.Protection

Especifica la protección definida por la API para las páginas.

MapProtect.DriverProtection

Especifica la protección específica del controlador para las páginas.

Unmap

Coloca el intervalo de direcciones virtuales especificado en el estado cero o en el estado no válido .

Unmap.BaseAddress

Especifica la baseAddress del intervalo de direcciones virtuales de GPU que se va a devolver al estado cero . El valor está en bytes y debe estar alineado con 4 KB.

Unmap.SizeInBytes

Especifica el tamaño, en bytes, para que el intervalo se libere. El valor debe estar alineado a 4 KB.

Unmap.Protection

Define es el estado de entrada de la tabla de páginas después de anular la asignación, ya sea Cero o NoAccess.

Copy

La operación de copia copia todas las asignaciones del intervalo de direcciones virtuales de GPU de origen al intervalo de destino. Los intervalos de origen y destino pueden intersecrse. Ambos intervalos deben pertenecer a un intervalo de direcciones virtuales reservado (cero).

BaseAddress

Especifica la dirección virtual de inicio del intervalo de direcciones virtuales de origen. El valor está en bytes y debe estar alineado con 4 KB.

Copy.SourceAddress

Copy.SizeInBytes

Especifica el tamaño, en bytes, para el intervalo que se va a copiar. El valor debe estar alineado a 4 KB.

Copy.DestAddress

Especifica la dirección virtual de inicio del intervalo de direcciones virtuales de destino. El valor está en bytes y debe estar alineado con 4 KB.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10
Servidor mínimo compatible Windows Server 2016
Encabezado d3dukmdt.h (incluya D3dumddi.h, D3dkmddi.h)

Consulte también

pfnReserveGpuVirtualAddressCb

pfnUpdateGpuVirtualAddressCb