Condividi tramite


struttura D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS (d3dukmdt.h)

La struttura D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS identifica gli attributi di un oggetto di sincronizzazione.

Sintassi

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;

Membri

Shared

Valore UINT che specifica se l'oggetto di sincronizzazione è condiviso.

Se condiviso è impostato su 1 (TRUE), l'oggetto di sincronizzazione viene condiviso. Se condiviso è impostato su zero (FALSE), l'oggetto di sincronizzazione non viene condiviso. Per altre informazioni, vedere la sezione Osservazioni.

NtSecuritySharing

Valore UINT che specifica se l'oggetto di sincronizzazione viene condiviso con un handle NT, ovvero non dispone di un handle globale D3DKMT_HANDLE modalità kernel per la risorsa.

Se NtSecuritySharing è impostato su 1 (TRUE), l'oggetto di sincronizzazione viene condiviso ma non dispone di un handle D3DKMT_HANDLE globale per la risorsa.

Nota

Se NtSecuritySharing è impostato su 1, condiviso deve essere impostato su 1. Per altre informazioni, vedere la sezione Osservazioni.

Supportato a partire da Windows 8.

CrossAdapter

Valore UINT che specifica se l'oggetto di sincronizzazione è un oggetto risorsa di condiviso tra adattatori in un sistema ibrido.

Se CrossAdapter è impostato su 1 (TRUE), l'oggetto di sincronizzazione è un oggetto cross-adapter condiviso. Se CrossAdapter è impostato su zero (FALSE), l'oggetto di sincronizzazione non è un oggetto cross-adapter condiviso.

TopOfPipeline

Valore Significato
VERO Specifica se l'oggetto di sincronizzazione viene segnalato non appena il contenuto del buffer dei comandi precedente viene copiato interamente nella pipeline GPU, ma non necessariamente completata. Questo comportamento consente di riutilizzare i buffer dei comandi il prima possibile.
FALSO L'oggetto di sincronizzazione viene segnalato dopo il completamento dell'esecuzione dei buffer dei comandi precedenti.

Questo valore può essere impostato solo su 1 (TRUE) per gli oggetti di sincronizzazione delle recinzioni monitorati e deve essere impostato su zero (FALSE) per tutti gli altri tipi di oggetto di sincronizzazione.

Supportato a partire da Windows 10.

NoSignal

Valore Significato
VERO Specifica che il dispositivo in cui viene creato o aperto questo oggetto di sincronizzazione può inviare solo comandi di attesa. Un tentativo di inviare un'operazione di segnale quando questo flag è impostato restituirà STATUS_ACCESS_DENIED.
FALSO È possibile segnalare l'oggetto di sincronizzazione.

Questo valore può essere impostato solo su 1 (TRUE) per gli oggetti di sincronizzazione delle recinzioni monitorati e deve essere impostato su zero (FALSE) per tutti gli altri tipi di oggetto di sincronizzazione.

Supportato a partire da Windows 10.

NoWait

Valore Significato
VERO Specifica che il dispositivo in cui viene creato o aperto questo oggetto di sincronizzazione può inviare solo comandi di segnale. Un tentativo di inviare un'operazione di attesa quando questo flag è impostato restituirà STATUS_ACCESS_DENIED.
FALSO L'oggetto di sincronizzazione può essere aspettato.

Questo valore può essere impostato solo su 1 (TRUE) per gli oggetti di sincronizzazione delle recinzioni monitorati e deve essere impostato su zero (FALSE) per tutti gli altri tipi di oggetto di sincronizzazione.

Questo flag non può essere impostato contemporaneamente con flag NoSignal.

Supportato a partire da Windows 10.

NoSignalMaxValueOnTdr

Valore Significato
VERO Indica all'utilità di pianificazione GPU di ignorare la segnalazione precedente del recinto monitorato al valore massimo nei casi TDR.
FALSO L'utilità di pianificazione GPU segnalerà il limite monitorato al valore massimo quando un dispositivo in grado di segnalarlo è interessato dalla reimpostazione della GPU (TDR).

Supportato a partire da Windows 10.

NoGPUAccess

Se impostata, il recinto non verrà mappato nello spazio indirizzi virtuale GPU e verrà sempre archiviato come valore a 64 bit (indipendentemente dai limiti dell'adattatore). Sono supportate solo le operazioni di segnale/attesa basate su pacchetti. Supportato a partire da Windows 10.

SignalByKmd

Se impostata, la recinzione può essere segnalata dal driver in modalità kernel (KMD). Questo flag può essere usato solo con gli oggetti D3DDDI_CPU_NOTIFICATION. Supportato a partire da Windows 11 (WDDM 3.0).

Unused

Questo membro non è usato e deve essere impostato su zero. Disponibile a partire da Windows 11 versione 22H2 (WDDM 3.1).

UnwaitCpuWaitersOnlyOnDestroy

Se impostato, i camerieri per un oggetto di sincronizzazione condiviso nella CPU verranno sbloccati solo quando l'oggetto di sincronizzazione condiviso viene infine eliminato definitivamente. Per impostazione predefinita, i camerieri della CPU vengono sbloccati quando un oggetto di sincronizzazione locale viene eliminato definitivamente, ma l'oggetto di sincronizzazione condiviso principale è ancora aperto da un altro oggetto di sincronizzazione locale. Supportato a partire da Windows 11 versione 24H2 (WDDM 3.2).

Reserved

Questo membro è riservato e deve essere impostato su zero.

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0

Questo membro è riservato e deve essere impostato su zero.

Supportato a partire da Windows 8.

Value

Membro dell'unione contenuto in D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS che può contenere un valore a 32 bit che identifica gli attributi di un oggetto di sincronizzazione.

Osservazioni

Gli oggetti da condividere usando la funzioneD3DKMTShareObjectsdevono prima essere creati con il valore del flag NtSecuritySharing impostato. Questo valore flag è disponibile nelle strutture D3DKMT_CREATEALLOCATIONFLAGS, D3DKMT_CREATEKEYEDMUTEX2_FLAGSe D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS.

I driver devono seguire queste linee guida sui flag D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS:

  • Se l'oggetto di sincronizzazione non è condiviso, impostare sia Shared che NtSecuritySharing su 0.

  • Se l'oggetto di sincronizzazione viene condiviso con un tipo di dati D3DKMT_HANDLE, impostare Shared = 1 e NtSecuritySharing = 0.

  • Se l'oggetto di sincronizzazione viene condiviso con un handle NT per il processo (e senza un handle globale D3DKMT_HANDLE modalità kernel per la risorsa), impostare condiviso = 1 e NtSecuritySharing = 1.

Fabbisogno

Requisito Valore
client minimo supportato Windows 7
intestazione d3dukmdt.h (include D3dumddi.h, D3dkmddi.h)

Vedere anche

D3DDDI_SYNCHRONIZATIONOBJECTINFO2

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DKMTShareObjects

D3DKMT_CREATEALLOCATIONFLAGS

D3DKMT_CREATEKEYEDMUTEX2_FLAGS