ID3D12Device::CreateSharedHandle, méthode (d3d12.h)

Crée un handle partagé pour un tas, une ressource ou un objet de clôture.

Syntaxe

HRESULT CreateSharedHandle(
  [in]           ID3D12DeviceChild         *pObject,
  [in, optional] const SECURITY_ATTRIBUTES *pAttributes,
                 DWORD                     Access,
  [in, optional] LPCWSTR                   Name,
  [out]          HANDLE                    *pHandle
);

Paramètres

[in] pObject

Type : ID3D12DeviceChild*

Pointeur vers l’interface ID3D12DeviceChild qui représente le tas, la ressource ou l’objet de clôture à créer pour le partage. Les interfaces suivantes (dérivées de ID3D12DeviceChild) sont prises en charge :

[in, optional] pAttributes

Type : const SECURITY_ATTRIBUTES*

Pointeur vers une structure de SECURITY_ATTRIBUTES qui contient deux membres de données distincts mais associés : un descripteur de sécurité facultatif et une valeur booléenne qui détermine si les processus enfants peuvent hériter du handle retourné.

Définissez ce paramètre sur NULL si vous souhaitez que les processus enfants que l’application peut créer n’héritent pas du handle retourné par CreateSharedHandle, et si vous souhaitez que la ressource associée au handle retourné obtienne un descripteur de sécurité par défaut.

Le membre lpSecurityDescriptor de la structure spécifie un SECURITY_DESCRIPTOR pour la ressource. Définissez ce membre sur NULL si vous souhaitez que le runtime attribue un descripteur de sécurité par défaut à la ressource associée au handle retourné. Les listes de contrôle d’accès dans le descripteur de sécurité par défaut pour la ressource proviennent du jeton principal ou d’emprunt d’identité du créateur. Pour plus d’informations, consultez Synchronisation Des droits d’accès et de sécurité des objets.

Access

Type : DWORD

Actuellement, la seule valeur acceptée par ce paramètre est GENERIC_ALL.

[in, optional] Name

Type : LPCWSTR

Chaîne UNICODE terminée par null qui contient le nom à associer au tas partagé. Le nom est limité à MAX_PATH caractères. La comparaison de noms respecte la casse.

Si Name correspond au nom d’une ressource existante, CreateSharedHandle échoue avec DXGI_ERROR_NAME_ALREADY_EXISTS. Cela se produit parce que ces objets partagent le même espace de noms.

Le nom peut avoir un préfixe « Global » ou « Local » pour créer explicitement l’objet dans l’espace de noms global ou de session. Le reste du nom peut contenir n’importe quel caractère à l’exception du caractère barre oblique inverse (\). Pour plus d’informations, consultez Espaces de noms d’objets de noyau. Le changement rapide d’utilisateur est implémenté à l’aide de sessions Terminal Services. Les noms d’objets de noyau doivent suivre les instructions décrites pour les services Terminal Server afin que les applications puissent prendre en charge plusieurs utilisateurs.

L’objet peut être créé dans un espace de noms privé. Pour plus d’informations, consultez Espaces de noms d’objets.

[out] pHandle

Type : HANDLE*

Pointeur vers une variable qui reçoit la valeur HANDLE NT vers la ressource à partager. Vous pouvez utiliser ce handle dans les appels pour accéder à la ressource.

Valeur retournée

Type : HRESULT

Retourne S_OK en cas de réussite ; Dans le cas contraire, retourne l’une des valeurs suivantes :

  • DXGI_ERROR_INVALID_CALL si l’un des paramètres n’est pas valide.
  • DXGI_ERROR_NAME_ALREADY_EXISTS si le nom fourni de la ressource à partager est déjà associé à une autre ressource.
  • E_ACCESSDENIED si l’objet est en cours de création dans un espace de noms protégé.
  • E_OUTOFMEMORY si la mémoire n’est pas suffisante pour créer le handle.
  • Peut-être d’autres codes d’erreur décrits dans la rubrique Codes de retour Direct3D 12 .

Notes

Les tas et les ressources validées peuvent être partagés. Le partage d’une ressource validée partage le tas implicite avec la description de la ressource validée, de sorte qu’une description de ressource compatible peut être mappée au tas à partir d’un autre appareil.

Pour les scénarios d’interopérabilité Direct3D 11 et Direct3D 12, une clôture partagée est ouverte dans DirectX 11 avec la méthode ID3D11Device5::OpenSharedFence , et une ressource partagée est ouverte avec la méthode ID3D11Device::OpenSharedResource1 .

Pour Direct3D 12, un handle partagé est ouvert avec la méthode ID3D12Device::OpenSharedHandle ou ID3D12Device::OpenSharedHandleByName.

Spécifications

   
Plateforme cible Windows
En-tête d3d12.h
Bibliothèque D3D12.lib
DLL D3D12.dll

Voir aussi

ID3D12Device