Partager via


D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS structure (d3dukmdt.h)

La structure D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS identifie les attributs d’un objet de synchronisation.

Syntaxe

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;

Membres

Shared

Valeur UINT qui spécifie si l’objet de synchronisation est partagé.

Si Partagé est défini sur 1 (TRUE), l’objet de synchronisation est partagé. Si Shared est défini sur zéro (FALSE), l’objet de synchronisation n’est pas partagé. Pour plus d'informations, consultez la section Notes.

NtSecuritySharing

Valeur UINT qui spécifie si l’objet de synchronisation est partagé avec un handle NT, ce qui signifie qu’il n’a pas de handle global D3DKMT_HANDLE en mode noyau pour la ressource.

Si NtSecuritySharing est défini sur 1 (TRUE), l’objet de synchronisation est partagé, mais n’a pas de handle de D3DKMT_HANDLE global à la ressource.

Notes

Si NtSecuritySharing est défini sur 1, Partagé doit avoir la valeur 1. Pour plus d'informations, consultez la section Notes.

Pris en charge à partir de Windows 8.

CrossAdapter

Valeur UINT qui spécifie si l’objet de synchronisation est un objet de ressource inter-adaptateur partagé sur un système hybride.

Si CrossAdapter a la valeur 1 (TRUE), l’objet de synchronisation est un objet inter-adaptateur partagé. Si CrossAdapter est défini sur zéro (FALSE), l’objet de synchronisation n’est pas un objet d’adaptateur croisé partagé.

TopOfPipeline

Valeur Signification
TRUE Spécifie si l’objet de synchronisation est signalé dès que le contenu de la mémoire tampon de commandes précédant est entièrement copié dans le pipeline GPU, mais pas nécessairement terminé l’exécution. Ce comportement permet de réutiliser les mémoires tampons de commande dès que possible.
FALSE L’objet de synchronisation est signalé une fois l’exécution des mémoires tampons de commande précédentes terminée.

Cette valeur ne peut être définie que sur 1 (TRUE) pour les objets de synchronisation de clôture supervisés, et elle doit être définie sur zéro (FALSE) pour tous les autres types d’objets de synchronisation.

Pris en charge à partir de Windows 10.

NoSignal

Valeur Signification
TRUE Spécifie que l’appareil sur lequel cet objet de synchronisation est créé ou ouvert peut uniquement envoyer des commandes d’attente pour celui-ci. Une tentative d’envoi d’une opération de signal lorsque cet indicateur est défini retourne STATUS_ACCESS_DENIED.
FALSE L’objet de synchronisation peut être signalé.

Cette valeur ne peut être définie que sur 1 (TRUE) pour les objets de synchronisation de clôture supervisés, et elle doit être définie sur zéro (FALSE) pour tous les autres types d’objets de synchronisation.

Pris en charge à partir de Windows 10.

NoWait

Valeur Signification
TRUE Spécifie que l’appareil sur lequel cet objet de synchronisation est créé ou ouvert peut uniquement envoyer des commandes de signal pour celui-ci. Une tentative d’envoi d’une opération d’attente lorsque cet indicateur est défini retourne STATUS_ACCESS_DENIED.
FALSE L’objet de synchronisation peut être attendu.

Cette valeur ne peut être définie que sur 1 (TRUE) pour les objets de synchronisation de clôture supervisés, et elle doit être définie sur zéro (FALSE) pour tous les autres types d’objets de synchronisation.

Cet indicateur ne peut pas être défini simultanément avec l’indicateur NoSignal .

Pris en charge à partir de Windows 10.

NoSignalMaxValueOnTdr

Valeur Signification
TRUE Indique au planificateur GPU de contourner la signalisation susmentionnée de la clôture surveillée à la valeur maximale dans les cas de TDR.
FALSE Le planificateur GPU signale la clôture supervisée à la valeur maximale lorsqu’un appareil qui peut potentiellement signaler qu’il est affecté par la réinitialisation gpu (TDR).

Pris en charge à partir de Windows 10.

NoGPUAccess

Lorsqu’elle est définie, la clôture n’est pas mappée dans l’espace d’adressage virtuel GPU et est toujours stockée en tant que valeur 64 bits (quelle que soit la limite de l’adaptateur). Seules les opérations de signal/d’attente basées sur les paquets sont prises en charge. Pris en charge à partir de Windows 10.

SignalByKmd

Lorsqu’elle est définie, la clôture peut être signalée par le pilote en mode noyau (KMD). Cet indicateur ne peut être utilisé qu’avec des objets D3DDDI_CPU_NOTIFICATION . Pris en charge à partir de Windows 11 (WDDM 3.0).

Unused

Ce membre n’est pas utilisé et doit être défini sur zéro. Disponible à partir de Windows 11, version 22H2 (WDDM 3.1).

UnwaitCpuWaitersOnlyOnDestroy

Lorsqu’elle est définie, les serveurs d’un objet de synchronisation partagé sur le processeur sont débloqués uniquement lorsque l’objet de synchronisation partagé est finalement détruit. Par défaut, les serveurs du processeur sont débloqués lorsqu’un objet de synchronisation local est détruit, mais l’objet de synchronisation partagé main est toujours ouvert par un autre objet de synchronisation local. Pris en charge à partir de Windows 11, version 24H2 (WDDM 3.2).

Reserved

Ce membre est réservé et doit être défini sur zéro.

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0

Ce membre est réservé et doit être défini sur zéro.

Pris en charge à partir de Windows 8.

Value

Membre de l’union contenu dans D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS pouvant contenir une valeur 32 bits qui identifie les attributs d’un objet de synchronisation.

Remarques

Les objets à partager à l’aide de la fonction D3DKMTShareObjects doivent d’abord être créés avec la valeur de l’indicateur NtSecuritySharing définie. Cette valeur d’indicateur est disponible dans les structures D3DKMT_CREATEALLOCATIONFLAGS, D3DKMT_CREATEKEYEDMUTEX2_FLAGS et D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS .

Les pilotes doivent suivre ces instructions sur les indicateurs de D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS :

  • Si l’objet de synchronisation n’est pas partagé, définissez Shared et NtSecuritySharing sur 0.

  • Si l’objet de synchronisation est partagé avec un type de données D3DKMT_HANDLE , définissez Shared = 1 et NtSecuritySharing = 0.

  • Si l’objet de synchronisation est partagé avec un handle NT pour le processus (et sans handle global D3DKMT_HANDLE en mode noyau pour la ressource), définissez Shared = 1 et NtSecuritySharing = 1.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7
En-tête d3dukmdt.h (include D3dumddi.h, D3dkmddi.h)

Voir aussi

D3DDDI_SYNCHRONIZATIONOBJECTINFO2

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DKMTShareObjects

D3DKMT_CREATEALLOCATIONFLAGS

D3DKMT_CREATEKEYEDMUTEX2_FLAGS