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