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