共用方式為


D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION結構 (d3dukmdt.h)

D3DDDI_UPDATEGPUVIRTUALADDRESS_OPERATION 描述虛擬位址更新作業。

語法

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;

成員

OperationType

Map

將指定的虛擬位址範圍對應至指定的配置範圍。 配置不必在提交時或對應時常駐。 讀寫保護會設定為頁面。 網頁的 DriverProtection 設定為零。

Map.BaseAddress

指定要更新之 GPU 虛擬位址範圍的 BaseAddress。 此值以位元組為單位,且必須對齊 4KB。

BaseAddressBaseAddress+SizeInBytes 的整個範圍都必須處於 保留對應 狀態,或 pfnUpdateGpuVirtualAddressCb 作業將會失敗。 所有作業的虛擬位址範圍必須屬於相同 pfnReserveGpuVirtualAddressCb 呼叫所保留的虛擬位址範圍。

Map.SizeInBytes

指定要更新之範圍的大小,以位元組為單位。 此值必須對齊 4KB。

Map.hAllocation

指定範圍必須對應的配置。

Map.AllocationOffsetInBytes

指定要對應之配置中第一頁的位移,以位元組為單位。 此值必須對齊 4KB。

Map.AllocationSizeInBytes

指定要對應之配置範圍的大小,以位元組為單位。 此值必須對齊 4KB,且必須小於 map.SizeInBytes 。 如果此值為零,則會使用 map.SizeInBytes

當此值大於 map.SizeInBytes 時,Map.SizeInBytes 必須是它的倍數。 在此情況下,Map.SizeInBytes/Map.AllocationSizeInBytes 虛擬地址範圍對應至相同的配置範圍。

MapProtect

將指定的虛擬位址範圍對應至指定的配置範圍。 配置不必在提交時或對應時常駐。 作業中指定頁面保護。

MapProtect.BaseAddress

指定要更新之 GPU 虛擬位址範圍的 BaseAddress。 此值以位元組為單位,且必須對齊 4KB。

BaseAddressBaseAddress+SizeInBytes 的整個範圍都必須處於 保留對應 狀態,或 pfnUpdateGpuVirtualAddressCb 將會失敗。 所有作業的虛擬位址範圍必須屬於相同 pfnReserveGpuVirtualAddressCb 呼叫所保留的虛擬位址範圍。

MapProtect.SizeInBytes

指定要更新之範圍的大小,以位元組為單位。 此值必須對齊 4KB。

MapProtect.hAllocation

指定範圍必須對應的配置。

MapProtect.AllocationOffsetInBytes

指定要對應之配置中第一頁的位移,以位元組為單位。 此值必須對齊 4KB。

MapProtect.AllocationSizeInBytes

指定要對應之配置範圍的大小,以位元組為單位。 此值必須對齊 4KB,且必須小於 Map。SizeInBytes。 如果此值為零,則會使用 map.SizeInBytes

當此值小於 map.SizeInBytes 時,Map.SizeInBytes 必須是它的倍數。 在此情況下,Map.SizeInBytes/Map.AllocationSizeInBytes 虛擬地址範圍對應至相同的配置範圍。

MapProtect.Protection

指定頁面的 API 定義保護。

MapProtect.DriverProtection

指定頁面的驅動程式特定保護。

Unmap

將指定的虛擬位址範圍置於 狀態或 無效的 狀態。

Unmap.BaseAddress

指定 GPU 虛擬位址範圍的 BaseAddress,以放回 狀態。 此值以位元組為單位,且必須對齊 4KB。

Unmap.SizeInBytes

指定要釋放範圍的大小,以位元組為單位。 此值必須對齊 4KB。

Unmap.Protection

Defines 是取消對應之後的頁表項目狀態,ZeroNoAccess

Copy

複製作業會將來源 GPU 虛擬位址範圍的所有對應複製到目的地範圍。 允許來源和目的地範圍交集。 這兩個範圍都必須屬於保留的(零)虛擬位址範圍。

BaseAddress

指定來源虛擬位址範圍的起始虛擬位址。 此值以位元組為單位,且必須對齊 4KB。

Copy.SourceAddress

Copy.SizeInBytes

指定所複製範圍的大小,以位元組為單位。 此值必須對齊 4KB。

Copy.DestAddress

指定目的地虛擬位址範圍的起始虛擬位址。 此值以位元組為單位,且必須對齊 4KB。

要求

要求 價值
最低支援的用戶端 Windows 10
支援的最低伺服器 Windows Server 2016
標頭 d3dukmdt.h (包括 D3dumddi.h, D3dkmddi.h)

另請參閱

pfnReserveGpuVirtualAddressCb

pfnUpdateGpuVirtualAddressCb