структура D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS (d3dukmdt.h)

Структура D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS определяет атрибуты объекта синхронизации.

Синтаксис

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 LocalMemoryPreferred : 1;
#if ...
      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;

Члены

Shared

Значение UINT, указывающее, является ли объект синхронизации общим.

Если для параметра Shared задано значение 1 (TRUE), объект синхронизации является общим. Если значение Shared равно нулю (FALSE), объект синхронизации не является общим. Дополнительные сведения см. в разделе «Примечания».

NtSecuritySharing

Значение UINT, указывающее, является ли объект синхронизации общим для дескриптора NT. Это означает, что у него нет глобального дескриптора D3DKMT_HANDLE режима ядра для ресурса.

Если ntSecuritySharing имеет значение 1 (TRUE), объект синхронизации является общим, но не имеет глобального D3DKMT_HANDLE дескриптора ресурса.

Примечание

Если для ntSecuritySharing задано значение 1, значение Shared должно быть равно 1. Дополнительные сведения см. в разделе «Примечания».

Поддерживается начиная с Windows 8.

CrossAdapter

Значение UINT, указывающее, является ли объект синхронизации общим объектом ресурса между адаптерами в гибридной системе.

Если параметр CrossAdapter имеет значение 1 (TRUE), объект синхронизации является общим объектом кроссадаптера. Если для CrossAdapter задано значение 0 (FALSE), объект синхронизации не является общим объектом кроссадаптера.

TopOfPipeline

Значение Значение
TRUE Указывает, будет ли объект синхронизации сигнализировать, как только содержимое буфера команд, предшествующее ему, полностью скопировано в конвейер GPU, но не обязательно завершено выполнение. Это позволяет повторно использовать буферы команд как можно скорее.
Ложь. Объект синхронизации получает сигнал после завершения выполнения предыдущей команды буферов.

Это значение может быть равно только 1 (TRUE) для отслеживаемых объектов синхронизации ограждения, а для всех остальных типов объектов синхронизации оно должно быть равно нулю (FALSE).

Поддерживается начиная с Windows 10.

NoSignal

Значение Значение
TRUE Указывает устройство, на котором создан или открыт объект синхронизации, может отправлять только команды ожидания для него. Попытка отправить сигнальную операцию при установке этого флага вернет STATUS_ACCESS_DENIED.
Ложь. Объект синхронизации может быть сигнализирован.

Это значение может быть равно только 1 (TRUE) для отслеживаемых объектов синхронизации ограждения, а для всех остальных типов объектов синхронизации оно должно быть равно нулю (FALSE).

Поддерживается начиная с Windows 10.

NoWait

Значение Значение
TRUE Указывает устройство, на котором создается или открыт объект синхронизации, может отправлять только сигнальные команды для него. Попытка отправить операцию ожидания при установке этого флага вернет STATUS_ACCESS_DENIED.
Ложь. Объект синхронизации можно ждать.

Это значение может быть равно только 1 (TRUE) для отслеживаемых объектов синхронизации ограждения, а для всех остальных типов объектов синхронизации оно должно быть равно нулю (FALSE).

Этот флаг нельзя задать одновременно с флагом NoSignal .

Поддерживается начиная с Windows 10.

NoSignalMaxValueOnTdr

Значение Значение
TRUE Указывает планировщику GPU обходить вышеупомянутую сигнализацию отслеживаемого ограждения до максимального значения в случаях TDR.
Ложь. Планировщик GPU будет сигнализировать отслеживаемого ограждения до максимального значения, когда устройство, которое может потенциально сигнализировать, что на него влияет сброс GPU (TDR).

Поддерживается начиная с Windows 10.

NoGPUAccess

Если этот параметр задан, ограждение не будет сопоставлено с виртуальным адресным пространством GPU и всегда будет храниться в виде 64-разрядного значения (независимо от ограничения адаптера). Поддерживаются только операции сигнала и ожидания на основе пакетов.

SignalByKmd

Если этот параметр задан, ограждение может быть сигнализироваться драйвером режима ядра (KMD). Этот флаг можно использовать только с D3DDDI_CPU_NOTIFICATION объектами . Поддерживается начиная с Windows 11 (WDDM 3.0).

LocalMemoryPreferred

Если задано значение , указывает, что по возможности ограждение должно быть помещено в локальную память GPU. Поддерживается начиная с Windows 11 версии 22H2 (WDDM 3.1).

Reserved

Этот элемент зарезервирован и должен иметь нулевое значение.

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS_RESERVED0

Этот элемент зарезервирован и должен иметь нулевое значение.

Поддерживается начиная с Windows 8.

Value

Элемент в объединении, который содержится в D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS , который может содержать одно 32-разрядное значение, определяющее атрибуты объекта синхронизации.

Комментарии

Объекты, к которым предоставляется общий доступ с помощью функции D3DKMTShareObjects , необходимо сначала создать с установленным значением флага NtSecuritySharing . Это значение флага доступно в структурах D3DKMT_CREATEALLOCATIONFLAGS, D3DKMT_CREATEKEYEDMUTEX2_FLAGS и D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS .

Драйверы должны следовать следующим рекомендациям по флагам D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS :

  • Если объект синхронизации не является общим, задайте для параметра Shared и NtSecuritySharing значение 0.

  • Если объект синхронизации используется совместно с типом данных D3DKMT_HANDLE , задайте значение Shared = 1 и NtSecuritySharing = 0.

  • Если объект синхронизации используется совместно с дескриптором NT для процесса (и без глобального дескриптора D3DKMT_HANDLE режима ядра для ресурса), установите значение Shared = 1 и NtSecuritySharing = 1.

Требования

Требование Значение
Минимальная версия клиента Windows 7
Верхняя часть d3dukmdt.h (включая D3dumddi.h, D3dkmddi.h)

См. также раздел

D3DDDI_SYNCHRONIZATIONOBJECTINFO2

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DKMTShareObjects

D3DKMT_CREATEALLOCATIONFLAGS

D3DKMT_CREATEKEYEDMUTEX2_FLAGS