Compartilhar via


estrutura D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION (d3dukmdt.h)

D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION descreve uma operação de atualização de endereço virtual.

Sintaxe

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;

Membros

OperationType

Map

Mapeia o intervalo de endereços virtuais fornecido para o intervalo de alocação fornecido. A alocação não precisa ser residente no momento do envio ou no momento do mapeamento. A proteção de leitura/gravação é definida como as páginas. do DriverProtection para as páginas é definido como zero.

Map.BaseAddress

Especifica o BaseAddress do intervalo de endereços virtuais de GPU a ser atualizado. O valor está em bytes e deve estar alinhado a 4KB.

Todo o intervalo de BaseAddress a +SizeInBytes deve estar no reservado (zero) ou estado de mapeado ou a operação de pfnUpdateGpuVirtualAddressCb falhará. Os intervalos de endereços virtuais para todas as operações devem pertencer a um intervalo de endereços virtual reservado pelo mesmo chamada de pfnReserveGpuVirtualAddressCb.

Map.SizeInBytes

Especifica o tamanho, em bytes, para o intervalo que está sendo atualizado. O valor deve estar alinhado a 4KB.

Map.hAllocation

Especifica a alocação para a qual o intervalo precisa ser mapeado.

Map.AllocationOffsetInBytes

Especifica o deslocamento, em bytes, para a primeira página na alocação a ser mapeada. O valor deve estar alinhado a 4KB.

Map.AllocationSizeInBytes

Especifica o tamanho do intervalo de alocação a ser mapeado, em bytes. O valor deve ser alinhado a 4KB e deve ser menor que Map.SizeInBytes. Se esse valor for zero, Map.SizeInBytes será usado.

Quando esse valor for superior a Map.SizeInBytes, Map.SizeInBytes deve ser um múltiplo dele. Nesse caso, Map.SizeInBytes/Map.AllocationSizeInBytes intervalos de endereços virtuais serão mapeados para o mesmo intervalo de alocação.

MapProtect

Mapeia o intervalo de endereços virtuais fornecido para o intervalo de alocação fornecido. A alocação não precisa ser residente no momento do envio ou no momento do mapeamento. A proteção de página é especificada na operação.

MapProtect.BaseAddress

Especifica o BaseAddress do intervalo de endereços virtuais de GPU a ser atualizado. O valor está em bytes e deve estar alinhado a 4KB.

Todo o intervalo de BaseAddress a +SizeInBytes deve estar no reservado (zero) ou estado mapeado ou pfnUpdateGpuVirtualAddressCb falhará. Os intervalos de endereços virtuais para todas as operações devem pertencer a um intervalo de endereços virtual reservado pelo mesmo chamada de pfnReserveGpuVirtualAddressCb.

MapProtect.SizeInBytes

Especifica o tamanho, em bytes, para o intervalo que está sendo atualizado. O valor deve estar alinhado a 4KB.

MapProtect.hAllocation

Especifica a alocação para a qual o intervalo precisa ser mapeado.

MapProtect.AllocationOffsetInBytes

Especifica o deslocamento, em bytes, para a primeira página na alocação a ser mapeada. O valor deve estar alinhado a 4KB.

MapProtect.AllocationSizeInBytes

Especifica o tamanho do intervalo de alocação a ser mapeado, em bytes. O valor deve ser alinhado a 4KB e deve ser menor que Map.SizeInBytes. Se esse valor for zero, Map.SizeInBytes será usado.

Quando esse valor for menor que Map.SizeInBytes, Map.SizeInBytes deve ser um múltiplo dele. Nesse caso, Map.SizeInBytes/Map.AllocationSizeInBytes intervalos de endereços virtuais serão mapeados para o mesmo intervalo de alocação.

MapProtect.Protection

Especifica a proteção definida pela API para as páginas.

MapProtect.DriverProtection

Especifica a proteção específica do driver para as páginas.

Unmap

Coloca o intervalo de endereços virtuais especificado no estado zero ou no estado de inválido.

Unmap.BaseAddress

Especifica o baseAddress do intervalo de endereços virtuais de GPU para colocar novamente no estado zero. O valor está em bytes e deve estar alinhado a 4KB.

Unmap.SizeInBytes

Especifica o tamanho, em bytes, para que o intervalo seja liberado. O valor deve estar alinhado a 4KB.

Unmap.Protection

Define é o estado de entrada da tabela de páginas após o não mapeamento, Zero ou NoAccess.

Copy

A operação de cópia copia todos os mapeamentos do intervalo de endereços virtuais de GPU de origem para o intervalo de destino. Os intervalos de origem e destino têm permissão para interseção. Ambos os intervalos devem pertencer a um intervalo de endereços virtuais reservado (zero).

BaseAddress

Especifica o endereço virtual inicial do intervalo de endereços virtuais de origem. O valor está em bytes e deve estar alinhado a 4KB.

Copy.SourceAddress

Copy.SizeInBytes

Especifica o tamanho, em bytes, para o intervalo que está sendo copiado. O valor deve estar alinhado a 4KB.

Copy.DestAddress

Especifica o endereço virtual inicial do intervalo de endereços virtuais de destino. O valor está em bytes e deve estar alinhado a 4KB.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 10
servidor com suporte mínimo Windows Server 2016
cabeçalho d3dukmdt.h (inclua D3dumddi.h, D3dkmddi.h)

Consulte também

pfnReserveGpuVirtualAddressCb

pfnUpdateGpuVirtualAddressCb