structure D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2 (d3dkmthk.h)

D3DKMT_OPENSYNCOBJECTFROMNTHANDLE2 est utilisé avec D3DKMTOpenSyncObjectFromNtHandle2 pour ouvrir un objet de clôture surveillé.

Syntaxe

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;

Membres

[in] hNtHandle

Handle NT pour l’objet de synchronisation à ouvrir.

[in] hDevice

Handle d’appareil sur lequel utiliser cet objet de synchronisation.

[in] Flags

Spécifie le comportement souhaité de l’objet de synchronisation pour cet appareil, comme la sémantique de l’attente et du signal et la gestion du TDR.

[out] hSyncObject

Gérez l’objet de synchronisation qui peut être utilisé dans ce processus.

MonitoredFence

Contient des adresses virtuelles d’objet de synchronisation qui peuvent être utilisées dans ce processus.

[out] MonitoredFence.FenceValueCPUVirtualAddress

Mappage en lecture seule de la valeur de clôture pour le processeur. Il s’agit d’une adresse de mode utilisateur lisible à partir du processus qui a créé l’objet de clôture surveillé. Pour les plateformes 32 bits qui prennent en charge les lectures atomiques 64 bits via des méthodes telles que InterlockedCompareExchange64(pointer,0,0), le mappage sera effectué en lecture-écriture plutôt qu’en lecture seule pour éviter une violation d’accès pendant l’opération verrouillée. Selon la valeur de la limite No64BitAtomics , cette adresse pointe vers une valeur sous-jacente de 32 bits ou 64 bits.

[out] MonitoredFence.FenceValueGPUVirtualAddress

Mappage en lecture-écriture de la valeur de clôture pour le GPU. Un pilote peut signaler une nouvelle valeur de clôture en insérant une commande d’écriture GPU pour cette adresse dans une mémoire tampon de commande, et le noyau graphique DirectX débloquera les serveurs pour cette valeur d’objet de clôture. Cette adresse virtuelle GPU est mappée de manière asynchrone, et le pilote doit attendre que l’appareil qui a ouvert ou créé l’objet de synchronisation de clôture supervisée atteigne PagingFenceValue sur son objet de clôture de pagination avant d’accéder à cette adresse virtuelle GPU. Selon la valeur de la limite No64BitAtomics , cette adresse pointe vers une valeur sous-jacente de 32 bits ou 64 bits.

[in] MonitoredFence.EngineAffinity

Champ bit, où chaque position de bit (à partir de zéro) définit un index d’adaptateur physique dans un lien de carte d’affichage lié où l’adresse virtuelle GPU sera validée. Zéro signifie que l’adresse virtuelle GPU sera validée sur toutes les cartes physiques.

Reserved[8]

Valeur consolidée de la structure MonitorFence .

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10
Serveur minimal pris en charge Windows Server 2016
En-tête d3dkmthk.h (inclure D3dkmthk.h)

Voir aussi

D3DKMTOpenSyncObjectFromNtHandle2