D3DDDI_SYNCHRONIZATIONOBJECTINFO2 Struktur (d3dukmdt.h)
Die D3DDDI_SYNCHRONIZATIONOBJECTINFO2-Struktur enthält Informationen zu einem Synchronisierungsobjekt der zweiten Generation.
Syntax
typedef struct _D3DDDI_SYNCHRONIZATIONOBJECTINFO2 {
D3DDDI_SYNCHRONIZATIONOBJECT_TYPE Type;
D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS Flags;
union {
struct {
BOOL InitialState;
} SynchronizationMutex;
struct {
UINT MaxCount;
UINT InitialCount;
} Semaphore;
struct {
D3DKMT_ALIGN64 UINT64 FenceValue;
} Fence;
struct {
HANDLE Event;
} CPUNotification;
struct {
D3DKMT_ALIGN64 UINT64 InitialFenceValue;
VOID *FenceValueCPUVirtualAddress;
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS FenceValueGPUVirtualAddress;
UINT EngineAffinity;
UINT Padding;
} MonitoredFence;
struct {
D3DKMT_HANDLE hAdapter;
D3DDDI_VIDEO_PRESENT_TARGET_ID VidPnTargetId;
D3DKMT_ALIGN64 UINT64 Time;
VOID *FenceValueCPUVirtualAddress;
D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS FenceValueGPUVirtualAddress;
UINT EngineAffinity;
UINT Padding;
} PeriodicMonitoredFence;
struct {
D3DKMT_ALIGN64 UINT64 Reserved[8];
} Reserved;
};
D3DKMT_HANDLE SharedHandle;
} D3DDDI_SYNCHRONIZATIONOBJECTINFO2;
Angehörige
Type
[in] Ein Wert vom Typ D3DDDI_SYNCHRONIZATIONOBJECT_TYPE, der den Typ des Synchronisierungsobjekts angibt.
Flags
[in] Eine D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS Struktur, die Attribute des Synchronisierungsobjekts in Bitfeldkennzeichnungen angibt.
SynchronizationMutex
Eine Struktur, die Informationen zu einem Synchronisierungsmutex enthält. Wenn der Type Member gleich D3DDDI_SYNCHRONIZATION_MUTEXist, enthält die Union in D3DDDI_SYNCHRONIZATIONOBJECTINFO2 eine SynchronizationMutex- Struktur.
SynchronizationMutex.InitialState
Ein boolescher Wert, der angibt, ob der Synchronisierungsmutex anfänglich einem Objekt gehört. Ein Wert von TRUE gibt an, dass der Mutex im Besitz ist; FALSE gibt an, dass der Mutex nicht im Besitz ist.
Semaphore
Eine Struktur, die Informationen zu einem Semaphor enthält. Wenn das Typ--Mitglied D3DDDI_SEMAPHOREentspricht, enthält die Vereinigung in D3DDDI_SYNCHRONIZATIONOBJECTINFO2 eine Semaphor- Struktur.
Semaphore.MaxCount
Die maximale Anzahl von Ereignissen, auf die ein Objekt warten kann.
Semaphore.InitialCount
Die anfängliche Anzahl von Ereignissen, auf die ein Objekt wartet.
Fence
Eine Struktur, die Informationen zu einem Zaun enthält. Wenn der Typ- Mitglied gleich D3DDDI_FENCEist, enthält die Vereinigung in D3DDDI_SYNCHRONIZATIONOBJECTINFO2 eine Zaun Struktur.
Fence.FenceValue
Ein 64-Bit-Wert, der den anfänglichen Zaunwert angibt.
CPUNotification
Eine Struktur, die Informationen zu einer CPU-Benachrichtigung enthält. Wenn der Typ--Member D3DDDI_CPU_NOTIFICATIONentspricht, enthält die Union in D3DDDI_SYNCHRONIZATIONOBJECTINFO2 eine CPUNotification- Struktur.
CPUNotification.Event
Das Handle für das CPU-Benachrichtigungsereignis.
MonitoredFence
Eine Struktur, die Informationen zu einem überwachten Zaun enthält. Wenn der Typ--Mitglied D3DDDI_MONITORED_FENCEentspricht, enthält die Vereinigung in D3DDDI_SYNCHRONIZATIONOBJECTINFO2 eine MonitoredFence- Struktur.
Überwachte Zäune können nur mithilfe von NT-Handles aus Sicherheitsgründen gemeinsam genutzt werden, sodass das NtSecuritySharing- Flag bei Verwendung eines überwachten Zauns festgelegt werden muss.
Wird ab Windows 10 unterstützt.
MonitoredFence.InitialFenceValue
[in] Ein 64-Bit-Wert, der den anfänglichen Zaunwert angibt.
Wird ab Windows 10 unterstützt.
MonitoredFence.FenceValueCPUVirtualAddress
[out] 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.
Wird ab Windows 10 unterstützt.
MonitoredFence.FenceValueGPUVirtualAddress
[out] 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 Dxgkrnl- die Blockierung von Kellnern für diesen Zaunobjektwert entsperrt. Je nach Wert von No64BitAtomics Cap verweist diese Adresse entweder auf einen 32-Bit- oder einen 64-Bit-zugrunde liegenden Wert. Wenn das Gerät die Cachekohärenz mit der CPU nicht unterstützt, sollte es nicht mit der virtuellen GPU-Adresse in den Zaunwert geschrieben werden. Der Zugriff auf den Zaunwert sollte nur von der CPU erfolgen.
Wird ab Windows 10 unterstützt.
MonitoredFence.EngineAffinity
[in] Ein Bitfeld, bei dem jede Bitposition (beginnend mit Null) einen physischen Adapterindex in einer Linkanzeigeadapterverbindung (LDA) definiert, bei der die virtuelle GPU-Adresse zugesichert wird. Null bedeutet, dass die virtuelle GPU-Adresse für alle physischen Adapter zugesichert wird.
Wird ab Windows 10 unterstützt.
MonitoredFence.Padding
PeriodicMonitoredFence
Eine Struktur, die Informationen zu einem regelmäßig überwachten Zaun enthält. Wenn das Typ--Mitglied gleich D3DDDI_PERIODIC_MONITORED_FENCEist, enthält die Vereinigung in D3DDDI_SYNCHRONIZATIONOBJECTINFO2 eine MonitoredFence- Struktur.
Wird ab Windows 10 unterstützt.
VidPnTargetID
[out] Die Ausgabe-ID, für die der Kompositor Benachrichtigungen empfangen möchte.
PeriodicMonitoredFence.hAdapter
[in] Ein Handle für den Adapter, der VidPnSourceID zugeordnet ist
PeriodicMonitoredFence.VidPnTargetId
PeriodicMonitoredFence.Time
[out] Stellt einen Offset vor VSync (Zeit von VSync – Time-Parameter) dar. Der Time-Wert darf nicht länger als ein VSync-Intervall (1 / DisplayModeRefresh) sein. Die Zeit wird in Einheiten von 100ns angegeben.
PeriodicMonitoredFence.FenceValueCPUVirtualAddress
[in] Schreibgeschützte Zuordnung des Zaunwerts für die CPU
PeriodicMonitoredFence.FenceValueGPUVirtualAddress
[in] Schreibgeschützte Zuordnung des Zaunwerts für die GPU
PeriodicMonitoredFence.EngineAffinity
[in] Definiert physische Adapter, auf denen die GPU VA zugeordnet wird.
PeriodicMonitoredFence.Padding
Reserved
Eine Struktur, die für die zukünftige Verwendung reserviert ist. Diese Struktur enthält das folgende Element:
Reserved.Reserved[8]
SharedHandle
[out] Ein Handle für das freigegebene Synchronisierungsobjekt, wenn derzeit ein freigegebenes Handle vorhanden ist. Der Treiber sollte Synchronisierungsobjekte mit NT-Handles freigeben. Sie sollte die D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS::NtSecuritySharing- festlegen, um anzugeben, dass das Objekt mithilfe von NT-Handles freigegeben und D3DKMTShareObjects aufgerufen wird, um ein NT-Handle abzurufen. Die Verwendung globaler Handles ist nicht sicher. Jeder Prozess kann ein globales Handle erraten und ein freigegebenes Objekt öffnen. Globale Handles werden nur aus Kompatibilitätsgründen mit alten D3D-Laufzeiten unterstützt.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 7 |
Header- | d3dukmdt.h (einschließlich D3dumddi.h, D3dkmddi.h) |
Siehe auch
D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS
D3DDDI_SYNCHRONIZATIONOBJECT_TYPE