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) |