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. 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 4 KB.

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

Map.SizeInBytes

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

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 4 KB.

Map.AllocationSizeInBytes

Especifica o tamanho do intervalo de alocação a ser mapeado, em bytes. O valor deve ser alinhado a 4 KB 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 deverá ser um múltiplo dele. Nesse caso, os intervalos de endereços virtuais Map.SizeInBytes/Map.AllocationSizeInBytes 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 4 KB.

Todo o intervalo de BaseAddress a BaseAddress+SizeInBytes deve estar no estado reservado (zero) ou 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 pela mesma chamada pfnReserveGpuVirtualAddressCb .

MapProtect.SizeInBytes

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

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 4 KB.

MapProtect.AllocationSizeInBytes

Especifica o tamanho do intervalo de alocação a ser mapeado, em bytes. O valor deve ser alinhado a 4 KB 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 deverá ser um múltiplo dele. Nesse caso, os intervalos de endereços virtuais Map.SizeInBytes/Map.AllocationSizeInBytes 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 inválido .

Unmap.BaseAddress

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

Unmap.SizeInBytes

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

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 4 KB.

Copy.SourceAddress

Copy.SizeInBytes

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

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 4 KB.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10
Servidor mínimo com suporte Windows Server 2016
Cabeçalho d3dukmdt.h (inclua D3dumddi.h, D3dkmddi.h)

Confira também

pfnReserveGpuVirtualAddressCb

pfnUpdateGpuVirtualAddressCb