Fonction RpcEpRegisterNoReplace (rpcdce.h)
La fonction RpcEpRegisterNoReplace ajoute des informations d’adresse de serveur à la base de données de carte de point de terminaison locale.
Syntaxe
RPC_STATUS RpcEpRegisterNoReplace(
RPC_IF_HANDLE IfSpec,
RPC_BINDING_VECTOR *BindingVector,
UUID_VECTOR *UuidVector,
RPC_CSTR Annotation
);
Paramètres
IfSpec
Interface pour s’inscrire auprès de la base de données de carte de point de terminaison locale.
BindingVector
Pointeur vers un vecteur de handles de liaison sur lequel le serveur peut recevoir des appels de procédure distante.
UuidVector
Pointeur vers un vecteur d’UUID d’objet proposé par le serveur. L’application serveur construit ce vecteur.
Une valeur de paramètre null indique qu’il n’y a pas d’UUID d’objet à inscrire.
Annotation
Pointeur vers le commentaire de chaîne de caractères appliqué à chaque élément inter-produit ajouté à la base de données de carte de point de terminaison locale. La chaîne peut avoir jusqu’à 64 caractères, y compris le caractère de fin null. Spécifiez une valeur null ou une chaîne terminée par null (« \0 ») s’il n’existe aucune chaîne d’annotation.
La chaîne d’annotation est utilisée par les applications à des fins d’informations uniquement. RPC n’utilise pas cette chaîne pour déterminer quel serveur instance un client communique avec ou pour énumérer des éléments dans la base de données endpoint-map.
Valeur retournée
Valeur | Signification |
---|---|
|
L’appel a réussi. |
|
Aucune liaison. |
|
Le handle de liaison n’était pas valide. |
|
Il s’agissait du mauvais type de liaison pour l’opération. |
Remarques
La fonction RpcEpRegisterNoReplace ajoute des entrées à la base de données endpoint-map de l’hôte local. Cette fonction ne remplace pas les entrées de base de données existantes.
Un serveur utilise RpcEpRegisterNoReplace plutôt que RpcEpRegister lorsque plusieurs instances du serveur s’exécutent sur le même hôte. En d’autres termes, utilisez cette fonction lorsque plusieurs serveurs instance proposent à tout moment le même UUID d’interface, l’UUID d’objet et la même séquence de protocole.
Étant donné que les entrées ne sont pas remplacées lors de l’appel de RpcEpRegisterNoReplace, les serveurs doivent se désinscrire eux-mêmes avant de cesser de s’exécuter. Sinon, les données obsolètes s’accumulent chaque fois qu’un serveur instance cesse de s’exécuter sans appeler RpcEpUnregister. Les entrées obsolètes augmentent la probabilité qu’un client reçoive des points de terminaison vers des serveurs inexistants. Le client passe du temps à essayer de communiquer avec un serveur inexistant avant d’obtenir un autre point de terminaison.
Un serveur peut utiliser RpcEpRegister et RpcEpRegisterNoReplace pour inscrire des entrées dans la base de données du mappeur de point de terminaison. Avant Windows 2000, deux fonctions étaient disponibles pour permettre à un serveur de remplacer les entrées obsolètes dans la base de données du mappeur de point de terminaison restante des instances de serveur précédentes qui ne sont plus en cours d’exécution. La base de données du mappeur de point de terminaison supprime automatiquement les entrées inscrites par un serveur instance dès que le serveur cesse de fonctionner. Toutefois, les serveurs ne sont pas autorisés à remplacer les entrées du mappeur de point de terminaison d’un autre serveur à des fins de sécurité. Par conséquent, RpcEpRegister et RpcEpRegisterNoReplace exécutent en grande partie les mêmes fonctionnalités.
Une application serveur appelle RpcEpRegister pour inscrire les points de terminaison spécifiés en appelant l’une des fonctions suivantes :
- RpcServerUseAllProtseqs
- RpcServerUseProtseq
- RpcServerUseProtseqEp
- RpcServerUseAllProtseqsIf
- RpcServerUseProtseqIf
Si une séquence de protocole est utilisée sans spécifier de point de terminaison, la bibliothèque d’exécution RPC génère automatiquement un point de terminaison dynamique. Dans ce cas, le serveur peut appeler RpcServerInqBindings suivi de RpcEpRegisterNoReplace pour se rendre disponible pour plusieurs clients. Sinon, le serveur démarré automatiquement est connu uniquement du client pour lequel le serveur a été démarré.
Chaque élément ajouté à la base de données endpoint-map contient logiquement les éléments suivants :
- UUID d’interface
- Version de l’interface (majeure et mineure)
- Handle de liaison
- UUID d’objet (facultatif)
- Annotation (facultatif)
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 | rpcdce.h (inclure Rpc.h) |
Bibliothèque | Rpcrt4.lib |
DLL | Rpcrt4.dll |