Handles entièrement et partiellement liés

Lorsque vous utilisez des points de terminaison dynamiques, les bibliothèques d’exécution obtiennent des informations sur les points de terminaison selon leurs besoins. Les bibliothèques au moment de l’exécution font la distinction entre un handle entièrement lié (qui inclut des informations de point de terminaison) et un handle partiellement lié (un qui n’inclut pas d’informations de point de terminaison).

La bibliothèque d’exécution du client doit convertir le handle partiellement lié en handle entièrement lié avant que le client puisse établir une liaison au serveur. La bibliothèque d’exécution du client tente de convertir le handle partiellement lié pour l’application cliente en obtenant les informations de point de terminaison comme indiqué :

  • À partir de la spécification de l’interface du client
  • À partir d’un service de mappage de point de terminaison en cours d’exécution sur le serveur

Si le client tente d’utiliser un handle partiellement lié lorsque les informations de point de terminaison ne sont pas disponibles dans la spécification de l’interface et que le mappeur de point de terminaison du serveur ne dispose pas d’informations sur le point de terminaison du serveur, le client ne dispose pas d’informations suffisantes pour effectuer son appel de procédure distante et cet appel échoue. Pour éviter cela, vous devez inscrire le point de terminaison dans le mappeur de point de terminaison lorsque votre application distribuée utilise des handles partiellement liés. Pour plus d’informations sur le mappeur de point de terminaison, consultez Spécification de points de terminaison dynamiques.

Lorsqu’un appel de procédure distante échoue, l’application cliente peut appeler RpcBindingReset pour supprimer les informations de point de terminaison obsolètes. Lorsque le client tente d’appeler la procédure distante, la bibliothèque d’exécution du client tente à nouveau de convertir le handle entièrement lié en handle partiellement lié. Cela est utile lorsque le serveur a été arrêté et redémarré à l’aide d’un autre point de terminaison dynamique.