Partager via


ID3D11Fence ::CreateSharedHandle, méthode (d3d11_3.h)

Crée un handle partagé pour un objet de clôture.

Cette méthode équivaut à la méthode Direct3D 12 ID3D12Device ::CreateSharedHandle et s’applique dans les scénarios impliquant l’interopérabilité entre Direct3D 11 et Direct3D 12. Dans DirecX 11, vous pouvez ouvrir la poignée de clôture partagée avec la méthode ID3D11Device5 ::OpenSharedFence. Dans DirecX 12, vous pouvez ouvrir la poignée de clôture partagée avec la méthode ID3D12Device ::OpenSharedHandle.

Syntaxe

HRESULT CreateSharedHandle(
  [in, optional] const SECURITY_ATTRIBUTES *pAttributes,
                 DWORD                     dwAccess,
  [in, optional] LPCWSTR                   lpName,
  [out]          HANDLE                    *pHandle
);

Paramètres

[in, optional] pAttributes

Type : const SECURITY_ATTRIBUTES*

Pointeur vers une structure SECURITY_ATTRIBUTES qui contient deux membres de données distincts mais connexes : 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 puisse créer pour ne pas hériter 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 lpSecurityDescriptor membre 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 des droits d’accès et de sécurité des objets de synchronisation.

dwAccess

Type : DWORD

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

[in, optional] lpName

Type : LPCWSTR

Une chaîne deNULL -terminated UNICODE qui contient le nom à associer au tas partagé. Le nom est limité à MAX_PATH caractères. La comparaison de noms respecte la casse.

Si Nom 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 de barre oblique inverse (\). Pour plus d’informations, consultez espaces de noms d’objets noyau. Le basculement rapide des utilisateurs est implémenté à l’aide de sessions Terminal Services. Les noms d’objets noyau doivent suivre les instructions décrites pour les services Terminal Services 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 NT HANDLE vers la ressource à partager. Vous pouvez utiliser ce handle dans les appels pour accéder à la ressource.

Valeur de retour

Type : HRESULT

Retourne S_OK en cas de réussite ; sinon, 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 créé dans un espace de noms protégé.
  • E_OUTOFMEMORY si la mémoire suffisante n’est pas disponible pour créer le handle.
  • Éventuellement d’autres codes d’erreur décrits dans la rubrique Codes de retour Direct3D 11.

Remarques

Pour créer une poignée partagée pour la clôture spécifiée, la clôture doit avoir été créée avec les indicateurs D3D11_FENCE_FLAG_SHARED ou D3D11_FENCE_FLAG_SHARED_CROSS_ADAPTER. Pour plus d’informations, consultez l’énumération D3D11_FENCE_FLAG.

Exigences

Exigence Valeur
plateforme cible Windows
d’en-tête d3d11_3.h
bibliothèque D3D11.lib
DLL D3D11.dll

Voir aussi

ID3D11Fence