Fonction RpcNsBindingExportW (rpcnsi.h)
La fonction RpcNsBindingExport établit une entrée de base de données de service de nom avec plusieurs handles de liaison et plusieurs objets pour un serveur.
Syntaxe
RPC_STATUS RpcNsBindingExportW(
unsigned long EntryNameSyntax,
RPC_WSTR 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 une chaîne null ou vide. Le client et le serveur doivent tous deux utiliser le même nom d’entrée.
IfSpec
Structure de données générées par stub spécifiant l’interface à exporter. Une valeur null indique qu’il n’y a pas de handles 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’y a pas de handles 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’y a pas d’UUID d’objet à exporter (seuls les handles de liaison doivent être exportés).
Valeur retournée
Valeur | Signification |
---|---|
|
L’appel a réussi. |
|
Il n’y avait rien à exporter. |
|
Le handle de liaison n’était pas valide. |
|
Il s’agissait du mauvais type de liaison pour l’opération. |
|
La syntaxe de nom n’est pas valide. |
|
La syntaxe de nom n’est pas prise en charge. |
|
Le nom est incomplet. |
|
Aucun privilège pour l’opération name-service. |
|
Nom de service indisponible. |
Remarques
La fonction RpcNsBindingExport permet à une application serveur de proposer 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 de service de nom. 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 l’autorisation et la Access Control Listes, consultez Access Control de 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 les handles qu’un client peut utiliser pour accéder au serveur. Une application serveur appelle également la fonction RpcNsBindingExport pour proposer publiquement les UUID d’objet des ressources qu’elle 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 il peut 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 la 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 points de terminaison locale en appelant RpcEpRegister ou RpcEpRegisterNoReplace.
Un serveur n’est pas obligé d’exporter ses interfaces vers la base de données name-service. Lorsqu’un serveur n’exporte pas, seuls les clients qui connaissent en privé les informations de liaison de ce serveur peuvent accéder à ses interfaces. Par exemple, un client qui dispose des informations nécessaires pour construire une liaison de chaîne peut appeler RpcBindingFromStringBinding pour créer un handle de liaison pour effectuer des appels de procédure à distance à un serveur.
Avant d’appeler RpcNsBindingExport, un serveur doit effectuer les opérations suivantes :
- Inscrivez une ou plusieurs séquences de protocole auprès de la bibliothèque d’exécution RPC locale en appelant l’une des fonctions suivantes :
- Obtenez la liste des liaisons de serveur en appelant la fonction RpcServerInqBindings .
Si un serveur exporte plusieurs fois vers la même entrée de base de données de nom-service, le deuxième appel et les appels suivants à RpcNsBindingExport ajoutent les informations de liaison et les UUID d’objet lorsque ces données sont différentes des informations de liaison déjà contenues 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 pour exister. Par conséquent, l’exportation uniquement des UUID vers une entrée non existante n’a aucun effet, et l’annulation de l’exportation de toutes les poignées de liaison supprime l’entrée.
Notes
L’en-tête rpcnsi.h définit RpcNsBindingExport comme un 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.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | rpcnsi.h (inclure Rpc.h) |
Bibliothèque | Rpcns4.lib |
DLL | Rpcns4.dll |