структура 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) |