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 estar 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 está establecido en cero.

Map.BaseAddress

Especifica el 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 reservado (cero) o estado asignado , o la operación pfnUpdateGpuVirtualAddressCb producirá un error. Los intervalos de direcciones virtuales para todas las operaciones deben pertenecer a un intervalo de direcciones virtuales que está reservado por el mismo 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 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 estar 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 el 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 reservado (cero) o estado asignado, o pfnUpdateGpuVirtualAddressCb producirá un error. Los intervalos de direcciones virtuales para todas las operaciones deben pertenecer a un intervalo de direcciones virtuales que está reservado por el mismo 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 a 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 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 de no válido.

Unmap.BaseAddress

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

Unmap.SizeInBytes

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

Unmap.Protection

Defines 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 inicial del intervalo de direcciones virtuales de destino. El valor está en bytes y debe estar alineado con 4 KB.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 10
servidor mínimo admitido Windows Server 2016
encabezado de d3dukmdt.h (incluya D3dumddi.h, D3dkmddi.h)

Consulte también

pfnReserveGpuVirtualAddressCb

pfnUpdateGpuVirtualAddressCb