Partager via


D3DKMTShareObjects, fonction (d3dkmthk.h)

D3DKMTShareObjects partage des objets de ressources créés avec les fonctions D3KMDTCreateAllocation, D3KMDTCreateAllocation2D3DKMTCreateKeyedMutex2 et D3DKMTCreateSynchronizationObject2 .

Syntaxe

NTSTATUS D3DKMTShareObjects(
  [in]  UINT                cObjects,
  [in]  const D3DKMT_HANDLE *hObjects,
  [in]  POBJECT_ATTRIBUTES  pObjectAttributes,
  [in]  DWORD               dwDesiredAccess,
  [out] HANDLE              *phSharedNtHandle
);

Paramètres

[in] cObjects

Nombre d’objets de ressource fournis dans le paramètre hObjects . Cette valeur doit être inférieure ou égale à D3DKMT_MAX_OBJECTS_PER_HANDLE.

[in] hObjects

Pointeur vers un tableau de handles locaux en mode noyau qui spécifient les objets de ressource à partager. Pour plus d’informations, consultez Remarques.

[in] pObjectAttributes

Pointeur vers une structure OBJECT_ATTRIBUTES qui spécifie les attributs des objets de ressource.

[in] dwDesiredAccess

Spécifie l’accès en lecture et en écriture pour la ressource.

Pour les objets de synchronisation GPU, dwDesiredAccess peut être une combinaison des champs de bits suivants (définis dans d3dukmdt.h).

Valeur Signification
STANDARD_RIGHTS_READ Le processus qui ouvre l’objet de synchronisation peut lire l’état de l’objet de synchronisation. Cet indicateur doit être spécifié, sinon l’objet sera inaccessible.
D3DDDI_SYNC_OBJECT_WAIT Le processus qui ouvre l’objet de synchronisation peut émettre des opérations d’attente pour l’objet de synchronisation.
D3DDDI_SYNC_OBJECT_SIGNAL Le processus qui ouvre l’objet de synchronisation peut émettre des opérations de signal pour l’objet de synchronisation.
D3DDDI_SYNC_OBJECT_ALL_ACCESS Le processus qui ouvre l’objet de synchronisation peut émettre n’importe quelle opération pour l’objet de synchronisation.

Pour les ressources partagées, l’accès souhaité peut être spécifié en combinaison des indicateurs suivants (définis dans d3dkmthk.h) :

Valeur Signification
STANDARD_RIGHTS_READ Le processus qui ouvre la ressource peut avoir un accès en lecture. Cet indicateur doit être spécifié, sinon l’objet sera inaccessible.
SHARED_ALLOCATION_WRITE Le processus qui ouvre la ressource peut avoir un accès en écriture. Si cet indicateur d’accès n’est pas spécifié, la ressource est ouverte en lecture seule.
SHARED_ALLOCATION_ALL_ACCESS Le processus qui ouvre la ressource peut avoir tous accès à l’objet .

[out] phSharedNtHandle

Pointeur vers un handle NT partagé qui spécifie les objets de ressource.

Ce paramètre est NULL si la valeur de l’indicateur NtSecuritySharing n’est pas définie. Pour plus d’informations, consultez Remarques.

Valeur retournée

La méthode retourne STATUS_SUCCESS si l’opération réussit. Sinon, cette méthode peut retourner un code d’erreur NTSTATUS approprié.

Remarques

Les objets à partager à l’aide de D3DKMTShareObjects doivent d’abord être créés avec la valeur de l’indicateur NtSecuritySharing définie. Cette valeur d’indicateur est disponible dans les structures D3DKMT_CREATEALLOCATIONFLAGS, D3DKMT_CREATEKEYEDMUTEX2_FLAGS et D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS .

Cette fonction doit spécifier des handles via le paramètre hObjects uniquement pour les combinaisons suivantes de types de tableau d’objets d’entrée :

  • une allocation
  • une allocation, un mutex à clé et un objet de synchronisation
  • un objet de synchronisation

Le système d’exploitation rejette toutes les autres combinaisons de handles d’entrée.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8
Serveur minimal pris en charge Windows Server 2012
Plateforme cible Universal
En-tête d3dkmthk.h (include D3dkmthk.h)
Bibliothèque Gdi32.lib
DLL Gdi32.dll

Voir aussi

D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS

D3DKMTCreateAllocation

D3DKMTCreateAllocation2

D3DKMTCreateKeyedMutex2

D3DKMTCreateSynchronizationObject2

D3DKMT_CREATEALLOCATIONFLAGS

D3DKMT_CREATEKEYEDMUTEX2_FLAGS