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;

Angehörige

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 Null (FALSE) festgelegt ist, wird das Synchronisierungsobjekt nicht freigegeben. Weitere Informationen finden Sie im Abschnitt "Hinweise".

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 jedoch nicht über ein globales D3DKMT_HANDLE Handle für die Ressource.

Anmerkung

Wenn NtSecuritySharing- auf 1 festgelegt ist, muss freigegebene auf 1 festgelegt sein. Weitere Informationen finden Sie im Abschnitt "Hinweise".

Wird ab Windows 8 unterstützt.

CrossAdapter

Ein UINT-Wert, der angibt, ob das Synchronisierungsobjekt ein freigegebenes Cross-Adapter-Ressourcenobjekt in einem Hybridsystemist.

Wenn CrossAdapter- auf 1 (TRUE) festgelegt ist, ist das Synchronisierungsobjekt ein gemeinsam genutztes Adapterobjekt. Wenn CrossAdapter- auf Null (FALSE) festgelegt ist, ist das Synchronisierungsobjekt kein gemeinsam genutztes Adapterobjekt.

TopOfPipeline

Wert Bedeutung
STIMMT Gibt an, ob das Synchronisierungsobjekt signalisiert wird, sobald der Inhalt des Befehlspuffers vor der GPU-Pipeline vollständig kopiert wird, aber nicht unbedingt abgeschlossene Ausführung. Dieses Verhalten ermöglicht die erneute Verwendung von Befehlspuffern so schnell wie möglich.
FALSCH Das Synchronisierungsobjekt wird signalisiert, nachdem die ausführung der vorherigen Befehlspuffer abgeschlossen wurde.

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

Wird ab Windows 10 unterstützt.

NoSignal

Wert Bedeutung
STIMMT Gibt an, dass das Gerät, auf dem dieses Synchronisierungsobjekt erstellt oder geöffnet wird, nur Wartebefehle senden kann. Beim Versuch, einen Signalvorgang zu senden, wenn dieses Flag festgelegt ist, wird STATUS_ACCESS_DENIED zurückgegeben.
FALSCH Das Synchronisierungsobjekt kann signalisiert werden.

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

Wird ab Windows 10 unterstützt.

NoWait

Wert Bedeutung
STIMMT Gibt an, dass das Gerät, auf dem dieses Synchronisierungsobjekt erstellt oder geöffnet wird, nur Signalbefehle senden kann. Beim Versuch, einen Wartevorgang zu senden, wenn dieses Flag festgelegt ist, wird STATUS_ACCESS_DENIED zurückgegeben.
FALSCH Das Synchronisierungsobjekt kann gewartet werden.

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

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

Wird ab Windows 10 unterstützt.

NoSignalMaxValueOnTdr

Wert Bedeutung
STIMMT Weist den GPU-Scheduler an, die oben erwähnte Signalisierung des überwachten Zauns auf den Höchstwert in TDR-Fällen zu umgehen.
FALSCH Der GPU-Scheduler signalisiert den überwachten Zaun auf den Maximalwert, wenn ein Gerät, das potenziell signalisiert, dass er von der GPU-Zurücksetzung (GPU Reset, TDR) betroffen ist.

Wird ab Windows 10 unterstützt.

NoGPUAccess

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

SignalByKmd

Bei Festlegung kann der Zaun vom Kernelmodustreiber (KERNEL-Mode Driver, KMD) signalisiert werden. Dieses Kennzeichen kann nur mit D3DDDI_CPU_NOTIFICATION Objekten verwendet werden. Wird ab Windows 11 (WDDM 3.0) unterstützt.

Unused

Dieses Element ist nicht verwendet und sollte auf Null festgelegt werden. Verfügbar ab Windows 11, Version 22H2 (WDDM 3.1).

UnwaitCpuWaitersOnlyOnDestroy

Wenn festgelegt, werden die Waiters für ein freigegebenes Synchronisierungsobjekt auf der CPU nur aufgehoben, wenn das freigegebene Synchronisierungsobjekt endgültig zerstört wird. Standardmäßig werden CPU-Waiter entsperrt, wenn ein lokales Synchronisierungsobjekt zerstört wird, aber das haupt freigegebene Synchronisierungsobjekt wird weiterhin von einem anderen lokalen Synchronisierungsobjekt geöffnet. Unterstützt ab Windows 11, Version 24H2 (WDDM 3.2).

Reserved

Dieses Element ist reserviert und sollte auf Null festgelegt werden.

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0

Dieses Element ist reserviert und sollte auf Null festgelegt werden.

Wird ab Windows 8 unterstützt.

Value

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

Bemerkungen

Objekte, die mithilfe der D3DKMTShareObjects--Funktion freigegeben werden sollen, müssen zuerst mit dem NtSecuritySharing Flagwertsatz erstellt werden. Dieser Kennzeichenwert ist in den Strukturen D3DKMT_CREATEALLOCATIONFLAGS, D3DKMT_CREATEKEYEDMUTEX2_FLAGSund D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS verfügbar.

Treiber sollten die folgenden Richtlinien für D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS Flags befolgen:

  • Wenn das Synchronisierungsobjekt nicht freigegeben ist, legen Sie Shared und NtSecuritySharing- auf 0 fest.

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

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

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 7
Header- d3dukmdt.h (einschließlich D3dumddi.h, D3dkmddi.h)

Siehe auch

D3DDDI_SYNCHRONIZATIONOBJECTINFO2

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DKMTShareObjects

D3DKMT_CREATEALLOCATIONFLAGS

D3DKMT_CREATEKEYEDMUTEX2_FLAGS