Freigeben über


D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS-Struktur (d3dukmdt.h)

Die D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS-Struktur identifiziert Attribute eines Synchronisierungsobjekts.

Syntax

typedef struct _D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS {
  union {
    struct {
      UINT Shared : 1;
      UINT NtSecuritySharing : 1;
      UINT CrossAdapter : 1;
      UINT TopOfPipeline : 1;
      UINT NoSignal : 1;
      UINT NoWait : 1;
      UINT NoSignalMaxValueOnTdr : 1;
      UINT NoGPUAccess : 1;
      UINT SignalByKmd : 1;
      UINT Unused : 1;
      UINT UnwaitCpuWaitersOnlyOnDestroy : 1;
#if ...
      UINT Reserved : 20;
#elif
      UINT Reserved : 21;
#elif
      UINT Reserved : 22;
#elif
      UINT Reserved : 23;
#elif
      UINT Reserved : 28;
#else
      UINT Reserved : 29;
#endif
      UINT D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0 : 1;
    };
    UINT Value;
  };
} D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS;

Member

Shared

Ein UINT-Wert, der angibt, ob das Synchronisierungsobjekt freigegeben ist.

Wenn Shared auf 1 (TRUE) festgelegt ist, wird das Synchronisierungsobjekt freigegeben. Wenn Shared auf 0 (FALSE) festgelegt ist, wird das Synchronisierungsobjekt nicht freigegeben. Weitere Informationen finden Sie im Abschnitt mit Hinweisen.

NtSecuritySharing

Ein UINT-Wert, der angibt, ob das Synchronisierungsobjekt für ein NT-Handle freigegeben wird, d. h. es verfügt nicht über ein globales D3DKMT_HANDLE Kernelmodushandle für die Ressource.

Wenn NtSecuritySharing auf 1 (TRUE) festgelegt ist, wird das Synchronisierungsobjekt freigegeben, verfügt aber nicht über ein globales D3DKMT_HANDLE Handle für die Ressource.

Hinweis

Wenn NtSecuritySharing auf 1 festgelegt ist, muss Shared auf 1 festgelegt werden. Weitere Informationen finden Sie im Abschnitt mit Hinweisen.

Unterstützt ab Windows 8.

CrossAdapter

Ein UINT-Wert, der angibt, ob das Synchronisierungsobjekt ein freigegebenes adapterübergreifendes Ressourcenobjekt in einem Hybridsystem ist.

Wenn CrossAdapter auf 1 (TRUE) festgelegt ist, ist das Synchronisierungsobjekt ein freigegebenes adapterübergreifendes Objekt. Wenn CrossAdapter auf 0 (FALSE) festgelegt ist, ist das Synchronisierungsobjekt kein freigegebenes adapterübergreifendes Objekt.

TopOfPipeline

Wert Bedeutung
true Gibt an, ob das Synchronisierungsobjekt signalisiert wird, sobald der Inhalt des Befehlspuffers davor vollständig in die GPU-Pipeline kopiert wird, die Ausführung jedoch nicht unbedingt abgeschlossen ist. Dieses Verhalten ermöglicht die schnellstmögliche Wiederverwendung von Befehlspuffern.
FALSE Das Synchronisierungsobjekt wird signalisiert, nachdem die Ausführung des vorherigen Befehlspuffers abgeschlossen wurde.

Dieser Wert kann für überwachte Zaunsynchronisierungsobjekte nur auf 1 (TRUE) festgelegt werden, und er sollte für alle anderen Synchronisierungsobjekttypen auf Null (FALSE) festgelegt werden.

Unterstützt ab Windows 10.

NoSignal

Wert Bedeutung
true Gibt an, auf dem das Synchronisierungsobjekt erstellt oder geöffnet wird, auf dem nur Wartebefehle für dieses Objekt übermittelt werden können. Ein Versuch, einen Signalvorgang zu übermitteln, wenn dieses Flag festgelegt ist, gibt STATUS_ACCESS_DENIED zurück.
FALSE Das Synchronisierungsobjekt kann signalisiert werden.

Dieser Wert kann für überwachte Zaunsynchronisierungsobjekte nur auf 1 (TRUE) festgelegt werden, und er sollte für alle anderen Synchronisierungsobjekttypen auf Null (FALSE) festgelegt werden.

Unterstützt ab Windows 10.

NoWait

Wert Bedeutung
true Gibt an, auf dem das Synchronisierungsobjekt erstellt oder geöffnet wird, für das nur Signalbefehle gesendet werden können. Ein Versuch, einen Wartevorgang zu übermitteln, wenn dieses Flag festgelegt ist, gibt STATUS_ACCESS_DENIED zurück.
FALSE Auf das Synchronisierungsobjekt kann gewartet werden.

Dieser Wert kann für überwachte Zaunsynchronisierungsobjekte nur auf 1 (TRUE) festgelegt werden, und er sollte für alle anderen Synchronisierungsobjekttypen auf Null (FALSE) festgelegt werden.

Dieses Flag kann nicht gleichzeitig mit dem NoSignal-Flag festgelegt werden.

Unterstützt ab Windows 10.

NoSignalMaxValueOnTdr

Wert Bedeutung
true Weist den GPU-Scheduler an, die oben erwähnte Signalisierung des überwachten Zauns in TDR-Fällen auf den maximalen Wert zu umgehen.
FALSE Der GPU-Scheduler signalisiert den überwachten Zaun bis zum Maximalen Wert, wenn ein Gerät, das potenziell signalisieren kann, von der GPU-Zurücksetzung (GPU Reset, TDR) betroffen ist.

Unterstützt ab Windows 10.

NoGPUAccess

Wenn festgelegt, wird der Zaun nicht dem virtuellen GPU-Adressraum zugeordnet und immer als 64-Bit-Wert gespeichert (unabhängig von Adapterkappen). Es werden nur paketbasierte Signal-/Wartevorgänge unterstützt. Unterstützt ab Windows 10.

SignalByKmd

Wenn festgelegt, kann der Zaun vom Kernelmodustreiber (KMD) signalisiert werden. Dieses Flag kann nur mit D3DDDI_CPU_NOTIFICATION-Objekten verwendet werden. Unterstützt ab Windows 11 (WDDM 3.0).

Unused

Dieser Member ist nicht verwendet und sollte auf 0 (null) festgelegt werden. Verfügbar ab Windows 11 Version 22H2 (WDDM 3.1).

UnwaitCpuWaitersOnlyOnDestroy

Wenn diese Einstellung festgelegt ist, werden die Wartevorgänge für ein freigegebenes Synchronisierungsobjekt auf der CPU erst aufgehoben, wenn das freigegebene Synchronisierungsobjekt endgültig zerstört wird. Standardmäßig werden CPU-Kellner entsperrt, wenn ein lokales Synchronisierungsobjekt zerstört wird, aber das Standard freigegebenen Synchronisierungsobjekts wird weiterhin von einem anderen lokalen Synchronisierungsobjekt geöffnet. Unterstützt ab Windows 11 Version 24H2 (WDDM 3.2).

Reserved

Dieser Member ist reserviert und sollte auf 0 (null) festgelegt werden.

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0

Dieser Member ist reserviert und sollte auf 0 (null) festgelegt werden.

Unterstützt ab Windows 8.

Value

Ein Member in der Union, das in D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS enthalten ist, das einen 32-Bit-Wert enthalten kann, der Attribute eines Synchronisierungsobjekts identifiziert.

Hinweise

Objekte, die mit der D3DKMTShareObjects-Funktion freigegeben werden sollen, müssen zuerst mit festgelegtem NtSecuritySharing-Flagwert erstellt werden. Dieser Flagwert ist in den strukturen D3DKMT_CREATEALLOCATIONFLAGS, D3DKMT_CREATEKEYEDMUTEX2_FLAGS und D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS verfügbar.

Treiber sollten diese Richtlinien für D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS-Flags befolgen:

  • Wenn das Synchronisierungsobjekt nicht freigegeben ist, legen Sie Sowohl Shared als auch NtSecuritySharing auf 0 fest.

  • Wenn das Synchronisierungsobjekt mit einem D3DKMT_HANDLE Datentyp freigegeben wird, legen Sie Shared = 1 und NtSecuritySharing = 0 fest.

  • Wenn das Synchronisierungsobjekt mit einem NT-Handle für den Prozess freigegeben wird (und ohne ein globales D3DKMT_HANDLE Kernelmodushandle für die Ressource), legen Sie Shared = 1 und NtSecuritySharing = 1 fest.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 7
Kopfzeile d3dukmdt.h (einschließlich D3dumddi.h, D3dkmddi.h)

Weitere Informationen

D3DDDI_SYNCHRONIZATIONOBJECTINFO2

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DKMTShareObjects

D3DKMT_CREATEALLOCATIONFLAGS

D3DKMT_CREATEKEYEDMUTEX2_FLAGS