D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2-Struktur (d3dkmthk.h)

D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2 wird mit D3DKMTOpenSyncObjectFromNtHandle2 verwendet, um ein überwachtes Zaunobjekt zu öffnen.

Syntax

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;

Member

[in] hNtHandle

NT-Handle für das zu öffnende Synchronisierungsobjekt.

[in] hDevice

Gerätehandle, auf dem dieses Synchronisierungsobjekt verwendet werden soll.

[in] Flags

Gibt das gewünschte Synchronisierungsobjektverhalten für dieses Gerät an, z. B. Warte- und Signalsemantik und TDR-Behandlung.

[out] hSyncObject

Handle mit dem Synchronisierungsobjekt, das in diesem Prozess verwendet werden kann.

MonitoredFence

Enthält virtuelle Adressen von Synchronisierungsobjekten, die in diesem Prozess verwendet werden können.

[out] MonitoredFence.FenceValueCPUVirtualAddress

Eine schreibgeschützte Zuordnung des Zaunwerts für die CPU. Dies ist eine Benutzermodusadresse, die aus dem Prozess gelesen wird, der das überwachte Zaunobjekt erstellt hat. Bei 32-Bit-Plattformen, die 64-Bit-Atomlesevorgänge über Methoden wie InterlockedCompareExchange64(pointer,0,0)unterstützen, wird die Zuordnung als Lese-/Schreibzugriff statt schreibgeschützt festgelegt, um eine Zugriffsverletzung während des ineinandergreifenden Vorgangs zu vermeiden. Abhängig vom Wert der No64BitAtomics-Obergrenze verweist diese Adresse entweder auf einen 32-Bit- oder einen 64-Bit-Zugrunde liegenden Wert.

[out] MonitoredFence.FenceValueGPUVirtualAddress

Eine Lese-/Schreibzuordnung des Zaunwerts für die GPU. Ein Treiber kann einen neuen Zaunwert signalisieren, indem er einen GPU-Schreibbefehl für diese Adresse in einen Befehlspuffer einfügt, und der DirectX-Grafikkern hebt die Blockierung für diesen Wert des Fenceobjekts auf. Diese virtuelle GPU-Adresse wird asynchron zugeordnet, und der Treiber sollte warten, bis das Gerät, das das überwachte Zaunsynchronisierungsobjekt geöffnet oder erstellt hat, PagingFenceValue auf seinem Pagingzaunobjekt erreicht, bevor er auf diese virtuelle GPU-Adresse zugreift. Abhängig vom Wert der No64BitAtomics-Obergrenze verweist diese Adresse entweder auf einen 32-Bit- oder einen 64-Bit-Zugrunde liegenden Wert.

[in] MonitoredFence.EngineAffinity

Ein Bitfeld, in dem jede Bitposition (beginnend bei Null) einen physischen Adapterindex in einem verknüpften Grafikkartenlink definiert, in dem die virtuelle GPU-Adresse committet wird. Null bedeutet, dass die virtuelle GPU-Adresse an alle physischen Adapter committet wird.

Reserved[8]

Der konsolidierte Wert der MonitoredFence-Struktur .

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10
Unterstützte Mindestversion (Server) Windows Server 2016
Kopfzeile d3dkmthk.h (include D3dkmthk.h)

Weitere Informationen

D3DKMTOpenSyncObjectFromNtHandle2