D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION-Struktur (d3dukmdt.h)
D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION beschreibt einen Virtuellen Adressaktualisierungsvorgang.
Syntax
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;
Member
OperationType
Map
Ordnet den angegebenen virtuellen Adressbereich dem angegebenen Zuordnungsbereich zu. Die Zuordnung muss nicht zum Zeitpunkt der Einreichung oder zum Zeitpunkt der Zuordnung ansässig sein. Der Lese-/Schreibschutz ist auf die Seiten festgelegt. DriverProtection für die Seiten ist auf Null festgelegt.
Map.BaseAddress
Gibt die BaseAddress des zu aktualisierenden virtuellen GPU-Adressbereichs an. Der Wert ist in Bytes und muss 4 KB ausgerichtet sein.
Der gesamte Bereich von BaseAddress bis BaseAddress+SizeInBytes muss sich im reservierten (null) oder zugeordneten Zustand befinden, andernfalls schlägt der PfnUpdateGpuVirtualAddressCb-Vorgang fehl. Die virtuellen Adressbereiche für alle Vorgänge müssen zu einem virtuellen Adressbereich gehören, der durch denselben pfnReserveGpuVirtualAddressCb-Aufruf reserviert ist.
Map.SizeInBytes
Gibt die Größe des zu aktualisierenden Bereichs in Bytes an. Der Wert muss 4 KB ausgerichtet sein.
Map.hAllocation
Gibt die Zuordnung an, der der Bereich zugeordnet werden muss.
Map.AllocationOffsetInBytes
Gibt den Offset in Bytes für die erste Seite in der Zuordnung an. Der Wert muss 4 KB ausgerichtet sein.
Map.AllocationSizeInBytes
Gibt die Größe des zugeordneten Zuordnungsbereichs in Byte an. Der Wert muss 4 KB ausgerichtet sein und kleiner als Map.SizeInBytes sein. Wenn dieser Wert 0 ist, wird Map.SizeInBytes verwendet.
Wenn dieser Wert map.SizeInBytes beträgt, muss Map.SizeInBytes ein Vielfaches davon sein. In diesem Fall werden die virtuellen Adressbereiche Map.SizeInBytes/Map.AllocationSizeInBytes dem gleichen Zuordnungsbereich zugeordnet.
MapProtect
Ordnet den angegebenen virtuellen Adressbereich dem angegebenen Zuordnungsbereich zu. Die Zuordnung muss nicht zum Zeitpunkt der Einreichung oder zum Zeitpunkt der Zuordnung ansässig sein. Der Seitenschutz wird im Vorgang angegeben.
MapProtect.BaseAddress
Gibt die BaseAddress des zu aktualisierenden virtuellen GPU-Adressbereichs an. Der Wert ist in Bytes und muss 4 KB ausgerichtet sein.
Der gesamte Bereich von BaseAddress bis BaseAddress+SizeInBytes muss sich im reservierten (null) oder zugeordneten Zustand befinden, andernfalls schlägt pfnUpdateGpuVirtualAddressCb fehl. Die virtuellen Adressbereiche für alle Vorgänge müssen zu einem virtuellen Adressbereich gehören, der durch denselben pfnReserveGpuVirtualAddressCb-Aufruf reserviert ist.
MapProtect.SizeInBytes
Gibt die Größe des zu aktualisierenden Bereichs in Bytes an. Der Wert muss 4 KB ausgerichtet sein.
MapProtect.hAllocation
Gibt die Zuordnung an, der der Bereich zugeordnet werden muss.
MapProtect.AllocationOffsetInBytes
Gibt den Offset in Bytes für die erste Seite in der Zuordnung an. Der Wert muss 4 KB ausgerichtet sein.
MapProtect.AllocationSizeInBytes
Gibt die Größe des zugeordneten Zuordnungsbereichs in Byte an. Der Wert muss 4 KB ausgerichtet sein und kleiner als Map sein. SizeInBytes. Wenn dieser Wert 0 ist, wird Map.SizeInBytes verwendet.
Wenn dieser Wert kleiner als Map.SizeInBytes ist, muss Map.SizeInBytes ein Vielfaches davon sein. In diesem Fall werden die virtuellen Adressbereiche Map.SizeInBytes/Map.AllocationSizeInBytes dem gleichen Zuordnungsbereich zugeordnet.
MapProtect.Protection
Gibt den durch die API definierten Schutz für die Seiten an.
MapProtect.DriverProtection
Gibt treiberspezifischen Schutz für die Seiten an.
Unmap
Setzt den angegebenen virtuellen Adressbereich in den Zustand null oder in den ungültigen Zustand.
Unmap.BaseAddress
Gibt die BaseAddress des virtuellen GPU-Adressbereichs an, der wieder in den Zustand Null versetzt werden soll. Der Wert ist in Bytes und muss 4 KB ausgerichtet sein.
Unmap.SizeInBytes
Gibt die Größe des frei zu gebenden Bereichs in Bytes an. Der Wert muss 4 KB ausgerichtet sein.
Unmap.Protection
Defines ist der Seitentabelleneintragsstatus nach dem Aufheben der Zuordnung, entweder Zero oder NoAccess.
Copy
Der Kopiervorgang kopiert alle Zuordnungen aus dem virtuellen GPU-Quelladressbereich in den Zielbereich. Der Quell- und der Zielbereich dürfen sich überschneiden. Beide Bereiche müssen zu einem reservierten virtuellen Adressbereich (null) gehören.
BaseAddress
Gibt die virtuelle Startadresse des virtuellen Quelladressbereichs an. Der Wert ist in Bytes und muss 4 KB ausgerichtet sein.
Copy.SourceAddress
Copy.SizeInBytes
Gibt die Größe des kopierten Bereichs in Bytes an. Der Wert muss 4 KB ausgerichtet sein.
Copy.DestAddress
Gibt die virtuelle Startadresse des virtuellen Zieladressbereichs an. Der Wert ist in Bytes und muss 4 KB ausgerichtet sein.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 10 |
Unterstützte Mindestversion (Server) | Windows Server 2016 |
Kopfzeile | d3dukmdt.h (einschließlich D3dumddi.h, D3dkmddi.h) |