D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS struttura (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;

Members

Shared

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

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

NtSecuritySharing

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

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

Nota

Se NtSecuritySharing è impostato su 1, 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 multi-adapter condiviso 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 multi-adapter condiviso.

TopOfPipeline

Valore Significato
true Specifica se l'oggetto di sincronizzazione viene segnalato non appena il contenuto del buffer di comando precedente viene copiato completamente nella pipeline della GPU, ma non necessariamente completata l'esecuzione. Questo comportamento consente di riutilizzare i buffer dei comandi non appena possibile.
FALSE 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 della recinzione monitorati e deve essere impostato su zero (FALSE) per tutti gli altri tipi di oggetti di sincronizzazione.

Supportato a partire da Windows 10.

NoSignal

Valore Significato
true Specifica che il dispositivo questo oggetto di sincronizzazione viene creato o aperto in può inviare solo i comandi di attesa per il dispositivo. Un tentativo di inviare un'operazione di segnale quando questo flag viene impostato restituirà STATUS_ACCESS_DENIED.
FALSE L'oggetto di sincronizzazione può essere segnalato.

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

Supportato a partire da Windows 10.

NoWait

Valore Significato
true Specifica che il dispositivo questo oggetto di sincronizzazione viene creato o aperto in può inviare solo comandi di segnale per esso. Un tentativo di inviare un'operazione di attesa quando questo flag viene impostato restituirà STATUS_ACCESS_DENIED.
FALSE L'oggetto di sincronizzazione può essere atteso.

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

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

Supportato a partire da Windows 10.

NoSignalMaxValueOnTdr

Valore Significato
true Indica all'utilità di pianificazione della GPU di ignorare il segnale precedente del recinto monitorato al valore massimo nei casi TDR.
FALSE L'utilità di pianificazione GPU segnalerà il recinto monitorato al valore massimo quando un dispositivo che può potenzialmente segnalarlo è interessato dalla reimpostazione della GPU (TDR).

Supportato a partire da Windows 10.

NoGPUAccess

Se impostato, il recinto non verrà mappato nello spazio indirizzi virtuale della 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 impostato, il recinto può essere segnalato dal driver in modalità kernel (KMD). Questo flag può essere usato solo con oggetti D3DDDI_CPU_NOTIFICATION . Supportato a partire da Windows 11 (WDDM 3.0).

Unused

Questo membro è inutilizzato 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. Per impostazione predefinita, i camerieri della CPU vengono sbloccati quando un oggetto di sincronizzazione locale viene distrutto, 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 contenuta in D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS che può contenere un valore a 32 bit che identifica gli attributi di un oggetto di sincronizzazione.

Commenti

Gli oggetti da condividere usando la funzione D3DKMTShareObjects devono prima essere creati con il valore del flag NtSecuritySharing . Questo valore di flag è disponibile nelle strutture D3DKMT_CREATEALLOCATIONFLAGS, D3DKMT_CREATEKEYEDMUTEX2_FLAGS e D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS.

I driver devono seguire queste linee guida sui flag di 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 in modalità kernel alla risorsa), impostare Shared = 1 e NtSecuritySharing = 1.

Requisiti

Requisito Valore
Client minimo supportato Windows 7
Intestazione d3dukmdt.h (include D3dumddi.h, D3dkmddi.h)

Vedi anche

D3DDDI_SYNCHRONIZATIONOBJECTINFO2

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DKMTShareObjects

D3DKMT_CREATEALLOCATIONFLAGS

D3DKMT_CREATEKEYEDMUTEX2_FLAGS