Compartir a través de


estructura D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS (d3dukmdt.h)

La estructura D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS identifica los atributos de un objeto de sincronización.

Sintaxis

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;

Miembros

Shared

Valor UINT que especifica si se comparte el objeto de sincronización.

Si Shared se establece en 1 (TRUE), se comparte el objeto de sincronización. Si Shared se establece en cero (FALSE), el objeto de sincronización no se comparte. Para obtener más información, vea la sección Comentarios.

NtSecuritySharing

Valor UINT que especifica si el objeto de sincronización se comparte con un identificador NT, lo que significa que no tiene un identificador global D3DKMT_HANDLE modo kernel para el recurso.

Si NtSecuritySharing se establece en 1 (TRUE), el objeto de sincronización se comparte, pero no tiene un identificador de D3DKMT_HANDLE global para el recurso.

Nota

Si NtSecuritySharing está establecido en 1, Shared debe establecerse en 1. Para obtener más información, vea la sección Comentarios.

Se admite a partir de Windows 8.

CrossAdapter

Valor UINT que especifica si el objeto de sincronización es un objeto de recurso de adaptador cruzado compartido en un sistema híbrido.

Si CrossAdapter se establece en 1 (TRUE), el objeto de sincronización es un objeto de adaptador cruzado compartido. Si CrossAdapter se establece en cero (FALSE), el objeto de sincronización no es un objeto de adaptador cruzado compartido.

TopOfPipeline

Valor Significado
TRUE Especifica si el objeto de sincronización se señala en cuanto el contenido del búfer de comandos anterior se copia completamente en la canalización de GPU, pero no necesariamente se completa la ejecución. Este comportamiento permite reutilizar los búferes de comandos lo antes posible.
FALSE El objeto de sincronización se señala después de que los búferes de comandos anteriores hayan completado la ejecución.

Este valor solo se puede establecer en 1 (TRUE) para los objetos de sincronización de barrera supervisadas y debe establecerse en cero (FALSE) para todos los demás tipos de objetos de sincronización.

Se admite a partir de Windows 10.

NoSignal

Valor Significado
TRUE Especifica que el dispositivo en el que se crea o abre este objeto de sincronización solo puede enviar comandos de espera. Un intento de enviar una operación de señal cuando se establece esta marca devolverá STATUS_ACCESS_DENIED.
FALSE Se puede señalar el objeto de sincronización.

Este valor solo se puede establecer en 1 (TRUE) para los objetos de sincronización de barrera supervisadas y debe establecerse en cero (FALSE) para todos los demás tipos de objetos de sincronización.

Se admite a partir de Windows 10.

NoWait

Valor Significado
TRUE Especifica el dispositivo en el que se crea o se abre este objeto de sincronización solo puede enviar comandos de señal para él. Un intento de enviar una operación de espera cuando se establezca esta marca devolverá STATUS_ACCESS_DENIED.
FALSE Se puede esperar el objeto de sincronización.

Este valor solo se puede establecer en 1 (TRUE) para los objetos de sincronización de barrera supervisadas y debe establecerse en cero (FALSE) para todos los demás tipos de objetos de sincronización.

Esta marca no se puede establecer simultáneamente con la marca NoSignal .

Se admite a partir de Windows 10.

NoSignalMaxValueOnTdr

Valor Significado
TRUE Indica al programador de GPU que omita la señalización mencionada anteriormente de la barrera supervisada al valor máximo en los casos de TDR.
FALSE El programador de GPU indicará la barrera supervisada al valor máximo cuando un dispositivo que pueda indicar que se ve afectado por el restablecimiento de GPU (TDR).

Se admite a partir de Windows 10.

NoGPUAccess

Cuando se establece, la barrera no se asignará al espacio de direcciones virtuales de GPU y siempre se almacenará como un valor de 64 bits (independientemente de los límites del adaptador). Solo se admiten las operaciones de espera/señal basadas en paquetes. Se admite a partir de Windows 10.

SignalByKmd

Cuando se establece, el controlador en modo kernel (KMD) puede indicar la valla. Esta marca solo se puede usar con objetos D3DDDI_CPU_NOTIFICATION . Se admite a partir de Windows 11 (WDDM 3.0).

Unused

Este miembro no se usa y debe establecerse en cero. Disponible a partir de Windows 11, versión 22H2 (WDDM 3.1).

UnwaitCpuWaitersOnlyOnDestroy

Cuando se establece, los esperadores de un objeto de sincronización compartido en la CPU solo se desbloquearán cuando el objeto de sincronización compartido se destruya finalmente. De forma predeterminada, los esperadores de CPU se desbloquean cuando se destruye un objeto de sincronización local, pero el objeto de sincronización compartido principal sigue abierto por otro objeto de sincronización local. Se admite a partir de Windows 11, versión 24H2 (WDDM 3.2).

Reserved

Este miembro está reservado y debe establecerse en cero.

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0

Este miembro está reservado y debe establecerse en cero.

Se admite a partir de Windows 8.

Value

Miembro de la unión contenida en D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS que puede contener un valor de 32 bits que identifica los atributos de un objeto de sincronización.

Comentarios

Los objetos que se van a compartir mediante la función D3DKMTShareObjects deben crearse primero con el valor de marca NtSecuritySharing establecido. Este valor de marca está disponible en las estructuras D3DKMT_CREATEALLOCATIONFLAGS, D3DKMT_CREATEKEYEDMUTEX2_FLAGS y D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS .

Los controladores deben seguir estas directrices sobre las marcas de D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS :

  • Si el objeto de sincronización no se comparte, establezca Shared y NtSecuritySharing en 0.

  • Si el objeto de sincronización se comparte con un tipo de datos D3DKMT_HANDLE , establezca Shared = 1 y NtSecuritySharing = 0.

  • Si el objeto de sincronización se comparte con un identificador NT para el proceso (y sin un identificador global D3DKMT_HANDLE modo kernel para el recurso), establezca Shared = 1 y NtSecuritySharing = 1.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7
Encabezado d3dukmdt.h (incluya D3dumddi.h, D3dkmddi.h)

Consulte también

D3DDDI_SYNCHRONIZATIONOBJECTINFO2

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DKMTShareObjects

D3DKMT_CREATEALLOCATIONFLAGS

D3DKMT_CREATEKEYEDMUTEX2_FLAGS