Partager via


RpcNsBindingExportA, fonction (rpcnsi.h)

La fonction RpcNsBindingExport établit une entrée de base de données de service de noms avec plusieurs handles de liaison et plusieurs objets pour un serveur.

Remarque Cette fonction n’est pas prise en charge sur les systèmes d’exploitation Windows Vista et ultérieurs.
 

Syntaxe

RPC_STATUS RpcNsBindingExportA(
  unsigned long      EntryNameSyntax,
  RPC_CSTR           EntryName,
  RPC_IF_HANDLE      IfSpec,
  RPC_BINDING_VECTOR *BindingVec,
  UUID_VECTOR        *ObjectUuidVec
);

Paramètres

EntryNameSyntax

Syntaxe de entryName.

Pour utiliser la syntaxe spécifiée dans l’entrée de valeur de Registre HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\NameService\DefaultSyntax, fournissez une valeur de RPC_C_NS_SYNTAX_DEFAULT.

EntryName

Pointeur vers le nom d’entrée vers lequel les handles de liaison et les UUID d’objet sont exportés. Vous ne pouvez pas fournir de chaîne null ou vide. Le client et le serveur doivent tous les deux utiliser le même nom d’entrée.

IfSpec

Structure de données générée par stub spécifiant l’interface à exporter. Une valeur Null indique qu’il n’existe aucun handle de liaison à exporter (seuls les UUID d’objet doivent être exportés) et BindingVec est ignoré.

BindingVec

Pointeur vers les liaisons de serveur à exporter. Une valeur Null indique qu’il n’existe aucun handle de liaison à exporter (seuls les UUID d’objet doivent être exportés).

ObjectUuidVec

Pointeur vers un vecteur d’UUID d’objet proposé par le serveur. L’application serveur construit ce vecteur. Une valeur Null indique qu’il n’existe pas d’UUID d’objet à exporter (seuls les handles de liaison doivent être exportés).

Valeur de retour

Valeur Signification
RPC_S_OK
L’appel a réussi.
RPC_S_NOTHING_TO_EXPORT
Il n’y avait rien à exporter.
RPC_S_INVALID_BINDING
Le handle de liaison n’était pas valide.
RPC_S_WRONG_KIND_OF_BINDING
Il s’agissait du mauvais type de liaison pour l’opération.
RPC_S_INVALID_NAME_SYNTAX
La syntaxe du nom n’est pas valide.
RPC_S_UNSUPPORTED_NAME_SYNTAX
La syntaxe du nom n’est pas prise en charge.
RPC_S_INCOMPLETE_NAME
Le nom est incomplet.
RPC_S_NO_NS_PRIVILEGE
Aucun privilège pour l’opération nom-service.
RPC_S_NAME_SERVICE_UNAVAILABLE
Le service de noms n’est pas disponible.
 
Remarque Pour obtenir la liste des codes d’erreur valides, consultez valeurs de retour RPC.
 

Remarques

La fonction RpcNsBindingExport permet à une application serveur d’offrir publiquement une interface dans la base de données name-service à utiliser par n’importe quelle application cliente.

À compter de Windows 2000, l’environnement d’exécution RPC utilise Active Directory comme base de données nom-service. Cela signifie que les entrées exportées autorisées persistent dans le service de noms et sont visibles même après le redémarrage. Les exportations non autorisées ne sont pas conservées. Pour plus d’informations sur les listes d’autorisation et de contrôle d’accès, consultez dans la section Sécurité du Kit de développement logiciel (SDK) de plateforme.

Pour exporter une interface, l’application serveur appelle la routine RpcNsBindingExport avec une interface et la liaison de serveur gère un client pour accéder au serveur. Une application serveur appelle également la fonction RpcNsBindingExport pour offrir publiquement le ou les UUID d’objets qu’il propose, le cas échéant, dans la base de données name-service.

Un serveur peut exporter des interfaces et des objets dans un seul appel à RpcNsBindingExport, ou les exporter séparément. Si l’entrée de base de données name-service spécifiée par EntryName n’existe pas, RpcNsBindingExport tente de le créer. Dans ce cas, l’application serveur doit avoir le privilège de créer l’entrée. En plus d’appeler RpcNsBindingExport, un serveur qui a appelé la fonction RpcServerUseAllProtseqs ou rpcServerUseProtseq doit également s’inscrire auprès de la base de données de mappage de point de terminaison locale en appelant RpcEpRegister ou RpcEpRegisterNoReplace.

Un serveur n’est pas nécessaire pour exporter ses interfaces vers la base de données name-service. Lorsqu’un serveur n’exporte pas, seuls les clients qui savent en privé que les informations de liaison du serveur peuvent accéder à ses interfaces. Par exemple, un client disposant des informations nécessaires pour construire une liaison de chaîne peut appeler le RpcBindingFromStringBinding pour créer un handle de liaison pour effectuer des appels de procédure distante à un serveur.

Avant d’appeler RpcNsBindingExport, un serveur doit effectuer les opérations suivantes :

Le vecteur retourné par la fonction RpcServerInqBindings devient le paramètre Binding pour RpcNsBindingExport. Pour empêcher l’exportation d’une liaison, définissez l’élément vectoriel sélectionné sur une valeur Null.

Si un serveur exporte plusieurs fois vers la même entrée de base de données nom-service, le deuxième et les appels suivants à RpcNsBindingExport ajouter les informations de liaison et les UUID d’objet lorsque ces données sont différentes des informations de liaison déjà dans l’entrée du serveur. Les données existantes ne sont pas supprimées de l’entrée.

Pour supprimer les handles de liaison et les UUID d’objet de la base de données name-service, une application serveur appelle la fonction RpcNsBindingUnexport.

Une entrée de serveur doit avoir au moins un handle de liaison à exister. Par conséquent, l’exportation des UUID uniquement vers une entrée non existante n’a aucun effet et l’annulation de l’exportation de tous les handles de liaison supprime l’entrée.

Note

L’en-tête rpcnsi.h définit RpcNsBindingExport comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
serveur minimum pris en charge Windows 2000 Server [applications de bureau uniquement]
plateforme cible Windows
d’en-tête rpcnsi.h (inclure Rpc.h)
bibliothèque Rpcns4.lib
DLL Rpcns4.dll

Voir aussi

RpcBindingFromStringBinding

RpcEpRegister

RpcEpRegisterNoReplace

RpcNsBindingUnexport

RpcServerInqBindings

RpcServerUseAllProtseqs

RpcServerUseAllProtseqsIf

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf