структура D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2 (d3dkmthk.h)

D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2 используется с D3DKMTOpenSyncObjectFromNtHandle2 для открытия отслеживаемого объекта ограждения.

Синтаксис

typedef struct _D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2 {
  [in]  HANDLE                             hNtHandle;
  [in]  D3DKMT_HANDLE                      hDevice;
  [in]  D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS Flags;
  [out] D3DKMT_HANDLE                      hSyncObject;
  union {
    struct {
      VOID                                  *FenceValueCPUVirtualAddress;
      D3DKMT_ALIGN64 D3DGPU_VIRTUAL_ADDRESS FenceValueGPUVirtualAddress;
      UINT                                  EngineAffinity;
    } MonitoredFence;
          D3DKMT_ALIGN64 UINT64 Reserved[8];
  };
} D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2;

Члены

[in] hNtHandle

Дескриптор NT для открываемого объекта синхронизации.

[in] hDevice

Дескриптор устройства для использования этого объекта синхронизации.

[in] Flags

Указывает требуемое поведение объекта синхронизации для этого устройства, например семантику ожидания и сигналов и обработку TDR.

[out] hSyncObject

Дескриптор объекта синхронизации, который можно использовать в этом процессе.

MonitoredFence

Содержит виртуальные адреса объектов синхронизации, которые можно использовать в этом процессе.

[out] MonitoredFence.FenceValueCPUVirtualAddress

Доступное только для чтения сопоставление значения ограждения для ЦП. Это адрес в пользовательском режиме, доступный для чтения из процесса, создавшего отслеживаемый объект ограждения. Для 32-разрядных платформ, поддерживающих 64-разрядные атомарные операции чтения с помощью таких методов, как InterlockedCompareExchange64(pointer,0,0), сопоставление будет выполняться для чтения и записи, а не только для чтения, чтобы избежать нарушения доступа во время операции блокировки. В зависимости от значения ограничения No64BitAtomics этот адрес указывает на 32-разрядное или 64-разрядное базовое значение.

[out] MonitoredFence.FenceValueGPUVirtualAddress

Сопоставление для чтения и записи значения ограждения для GPU. Драйвер может сообщить о новом значении ограждения, вставив команду записи GPU для этого адреса в буфер команд, и графическое ядро DirectX разблокировать официантов для этого значения объекта ограждения. Этот виртуальный адрес GPU сопоставляется асинхронно, и драйвер должен ожидать, пока устройство, открывающее или создающее отслеживаемый объект синхронизации ограждения, достигнет PagingFenceValue в своем объекте ограждения подкачки, прежде чем получить доступ к этому виртуальному адресу GPU. В зависимости от значения ограничения No64BitAtomics этот адрес указывает на 32-разрядное или 64-разрядное базовое значение.

[in] MonitoredFence.EngineAffinity

Битовое поле, где каждое битовое положение (начиная с нуля) определяет индекс физического адаптера в связанном канале видеоадаптера, где будет зафиксирован виртуальный адрес GPU. Ноль означает, что виртуальный адрес GPU будет зафиксирован для всех физических адаптеров.

Reserved[8]

Консолидированное значение структуры MonitoredFence .

Требования

Требование Значение
Минимальная версия клиента Windows 10
Минимальная версия сервера Windows Server 2016
Верхняя часть d3dkmthk.h (включая D3dkmthk.h)

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

D3DKMTOpenSyncObjectFromNtHandle2