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