Condividi tramite


struttura D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2 (d3dkmthk.h)

D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2 viene usato con D3DKMTOpenSyncObjectFromNtHandle2 per aprire un oggetto recinto monitorato.

Sintassi

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;

Membri

[in] hNtHandle

Handle NT per l'oggetto di sincronizzazione da aprire.

[in] hDevice

Handle del dispositivo in cui usare questo oggetto di sincronizzazione.

[in] Flags

Specifica il comportamento dell'oggetto di sincronizzazione desiderato per questo dispositivo, ad esempio semantica di attesa e segnale e gestione TDR.

[out] hSyncObject

Handle per l'oggetto di sincronizzazione che può essere usato in questo processo.

MonitoredFence

Contiene gli indirizzi virtuali dell'oggetto di sincronizzazione che possono essere usati in questo processo.

[out] MonitoredFence.FenceValueCPUVirtualAddress

Mapping di sola lettura del valore di limite per la CPU. Si tratta di un indirizzo in modalità utente leggibile dal processo che ha creato l'oggetto recinto monitorato. Per le piattaforme a 32 bit che supportano letture atomiche a 64 bit tramite metodi come InterlockedCompareExchange64(pointer,0,0), il mapping verrà eseguito in lettura/scrittura anziché in sola lettura per evitare una violazione di accesso durante l'operazione interlocked. A seconda del valore di No64BitAtomics limite, questo indirizzo punta a un valore sottostante a 32 bit o a 64 bit.

[out] MonitoredFence.FenceValueGPUVirtualAddress

Mapping in lettura/scrittura del valore di recinto per la GPU. Un driver può segnalare un nuovo valore di limite inserendo un comando di scrittura GPU per questo indirizzo in un buffer dei comandi e il kernel grafico DirectX sbloccherà i camerieri per questo valore dell'oggetto di isolamento. Questo indirizzo virtuale GPU viene mappato in modo asincrono e il driver deve attendere che il dispositivo che ha aperto o creato l'oggetto di sincronizzazione del recinto monitorato raggiunga PagingFenceValue sul relativo oggetto recinto di paging prima di accedere a questo indirizzo virtuale GPU. A seconda del valore di No64BitAtomics limite, questo indirizzo punta a un valore sottostante a 32 bit o a 64 bit.

[in] MonitoredFence.EngineAffinity

Un campo di bit, in cui ogni posizione di bit (a partire da zero) definisce un indice di adattatore fisico in un collegamento alla scheda di visualizzazione collegata in cui verrà eseguito il commit dell'indirizzo virtuale GPU. Zero significa che verrà eseguito il commit dell'indirizzo virtuale GPU in tutte le schede fisiche.

Reserved[8]

Valore consolidato della struttura MonitoredFence.

Fabbisogno

Requisito Valore
client minimo supportato Windows 10
server minimo supportato Windows Server 2016
intestazione d3dkmthk.h (include D3dkmthk.h)

Vedere anche

D3DKMTOpenSyncObjectFromNtHandle2