Freigeben über


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

D3DKMTCreateSynchronizationObject

D3DKMT_CREATESYNCHRONIZATIONOBJECT2