Freigeben über


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;

Angehörige

[in] hNtHandle

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

[in] hDevice

Gerätehandle zum Verwenden dieses Synchronisierungsobjekts aktiviert.

[in] Flags

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

[out] hSyncObject

Behandeln Sie das Synchronisierungsobjekt, das in diesem Prozess verwendet werden kann.

MonitoredFence

Enthält virtuelle Synchronisierungsobjektadressen, 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 vom Prozess gelesen werden kann, 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 schreibgeschützt erstellt, um während des verriegelten Vorgangs eine Zugriffsverletzung zu vermeiden. Je nach Wert von No64BitAtomics Cap 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 entsperrt Die Blockierung für diesen Zaunobjektwert. Diese virtuelle GPU-Adresse wird asynchron zugeordnet, und der Treiber sollte auf das Gerät warten, das das überwachte Zaunsynchronisierungsobjekt geöffnet oder erstellt hat, um PagingFenceValue auf seinem Paging-Zaunobjekt zu erreichen, bevor auf diese virtuelle GPU-Adresse zugegriffen wird. Je nach Wert von No64BitAtomics Cap verweist diese Adresse entweder auf einen 32-Bit- oder einen 64-Bit-zugrunde liegenden Wert.

[in] MonitoredFence.EngineAffinity

Ein Bitfeld, bei dem jede Bitposition (beginnend mit Null) einen physischen Adapterindex in einer verknüpften Grafikkartenverknüpfung definiert, bei der die virtuelle GPU-Adresse zugesichert wird. Null bedeutet, dass die virtuelle GPU-Adresse allen physischen Adaptern zugesichert wird.

Reserved[8]

Der konsolidierte Wert der MonitoredFence Struktur.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 10
mindestens unterstützte Server- Windows Server 2016
Header- d3dkmthk.h (einschließlich D3dkmthk.h)

Siehe auch

D3DKMTOpenSyncObjectFromNtHandle2