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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für