Поделиться через


структура 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 (include D3dkmthk.h)

См. также

D3DKMTOpenSyncObjectFromNtHandle2