D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2结构(d3dkmthk.h)

D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2D3DKMTOpenSyncObjectFromNtHandle2 一起使用,以打开受监视的围栏对象。

语法

typedef struct _D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2 {
  [in]  HANDLE                             hNtHandle;
  [in]  D3DKMT_HANDLE                      hDevice;
  [in]  D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS Flags;
  [out] D3DKMT_HANDLE                      hSyncObject;
  union {
    struct {
      VOID                                  *FenceValueCPUVirtualAddress;
      D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS FenceValueGPUVirtualAddress;
      UINT                                  EngineAffinity;
    } MonitoredFence;
          D3DKMT_ALIGN64 UINT64 Reserved[8];
  };
} D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2;

成员

[in] hNtHandle

要打开的同步对象的 NT 句柄。

[in] hDevice

要启用此同步对象的设备句柄。

[in] Flags

指定此设备的所需同步对象行为,例如等待和信号语义和 TDR 处理。

[out] hSyncObject

可在此进程中使用的同步对象的句柄。

MonitoredFence

包含可在此过程中使用的同步对象虚拟地址。

[out] MonitoredFence.FenceValueCPUVirtualAddress

CPU 围栏值的只读映射。 这是一个用户模式地址,可从创建受监视的围栏对象的进程读取。 对于支持通过 InterlockedCompareExchange64(pointer,0,0)等方法进行 64 位原子读取的 32 位平台,将进行读写,而不是只读,以避免在互锁操作期间发生访问冲突。 根据 No64BitAtomics 上限的值,此地址指向 32 位或 64 位基础值。

[out] MonitoredFence.FenceValueGPUVirtualAddress

GPU 围栏值的读写映射。 驱动程序可以通过将此地址的 GPU 写入命令插入命令缓冲区来发出新的围栏值信号,DirectX 图形内核将取消阻止此隔离对象值的等待程序。 此 GPU 虚拟地址以异步方式映射,驱动程序应等待打开或创建受监视围栏同步对象的设备在访问此 GPU 虚拟地址之前在其分页围栏对象上 PagingFenceValue。 根据 No64BitAtomics 上限的值,此地址指向 32 位或 64 位基础值。

[in] MonitoredFence.EngineAffinity

位字段,其中每个位位置(从零开始)在链接的显示适配器链接中定义物理适配器索引,其中将提交 GPU 虚拟地址。 零表示 GPU 虚拟地址将提交到所有物理适配器。

Reserved[8]

MonitoredFence 结构的合并值。

要求

要求 价值
最低支持的客户端 Windows 10
支持的最低服务器 Windows Server 2016
标头 d3dkmthk.h (包括 D3dkmthk.h)

另请参阅

D3DKMTOpenSyncObjectFromNtHandle2