Partager via


Fonction RpcNsBindingLookupNext (rpcnsi.h)

La fonction RpcNsBindingLookupNext retourne une liste de handles de liaison compatibles pour une interface spécifiée et éventuellement un objet.

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

Syntaxe

RPC_STATUS RpcNsBindingLookupNext(
  RPC_NS_HANDLE      LookupContext,
  RPC_BINDING_VECTOR **BindingVec
);

Paramètres

LookupContext

Handle de service de nom retourné par la fonction RpcNsBindingLookupBegin .

BindingVec

Retourne l’adresse d’un pointeur vers un vecteur de handles de liaison de serveur compatibles avec le client.

Valeur retournée

Valeur Signification
RPC_S_OK
L’appel a réussi.
RPC_S_NO_MORE_BINDINGS
Plus de liaisons.
RPC_S_NAME_SERVICE_UNAVAILABLE
Nom de service indisponible.
 
Note Pour obtenir la liste des codes d’erreur valides, consultez Valeurs de retour RPC.
 

Remarques

La fonction RpcNsBindingLookupNext retourne un vecteur de handles de liaison de serveur compatibles avec le client pour un serveur offrant l’UUID d’interface et d’objet spécifié par les paramètres IfSpec et ObjUuid dans la fonction RpcNsBindingLookupBegin . (Comparez cela à RpcNsBindingImportNext, qui retourne un seul handle de liaison de serveur compatible.)

La fonction RpcNsBindingLookupNext communique uniquement avec la base de données name-service, pas directement avec les serveurs.

À compter de Windows 2000, l’environnement RPC utilise Active Directory comme base de données de service de nom et l’ordre dans lequel l’environnement d’exécution effectue la recherche est le suivant :

  • Recherchez dans le cache local.
  • Si l’entrée n’est pas trouvée dans le cache local, effectuez une recherche dans Active Directory de cet ordinateur.
  • Si l’entrée est introuvable sur l’ordinateur local, envoyez les demandes de diffusion à tous les autres services Active Directory du domaine.

    Notez que si l’entrée existe dans Active Directory, mais qu’aucune information n’est associée à l’entrée, l’environnement d’exécution n’émettra pas cette demande de diffusion.

Lors d’appels successifs, la fonction RpcNsBindingLookupNext traverse les entrées de base de données name-service, collectant les handles de liaison de serveur compatibles avec le client à partir de chaque entrée.

Lorsque Microsoft Active Directory est la base de données name-service, RpcNsBindingLookupNext traverse la base de données uniquement si le nom d’entrée donné est null et que l’entrée par défaut (dans le Registre) n’est pas définie ou vide. En outre, étant donné que les entrées mixtes ne sont pas autorisées dans Active Directory, la fonction recherche uniquement les noms d’entrée de serveur, et non les noms de groupes ou de profils.

Lorsque le service DCE Cell Directory Service (CDS) est la base de données name-service et que l’entrée à laquelle la recherche commence contient des handles de liaison en plus des noms de groupe ou de profil, RpcNsBindingLookupNext retourne les handles de liaison à partir d’EntryName avant de rechercher le groupe ou le profil. Cela signifie que la fonction peut retourner un vecteur partiellement complet avant de traiter les membres du groupe ou du profil.

Le handle de liaison compatible retourné contient toujours un UUID d’objet, dont la valeur dépend du paramètre ObjUuid dans la fonction RpcNsBindingImportBegin . Si un UUID d’objet non null a été spécifié, le handle de liaison retourné contient cet UUID d’objet. Toutefois, si un UUID d’objet null ou une valeur null a été spécifié, l’UUID de l’objet retourné est le résultat des possibilités suivantes :

  • Si le serveur n’a pas exporté d’UUID d’objet, le handle de liaison retourné contient un UUID d’objet nul.
  • Si le serveur a exporté un UUID d’objet, le handle de liaison retourné contient cet UUID d’objet.
  • Si le serveur a exporté plusieurs UUID d’objets, le handle de liaison retourné contient l’un des UUID d’objet. L’opération import-next sélectionne l’UUID de l’objet retourné de manière non déterministe. Par conséquent, un UUID d’objet différent peut être retourné pour chaque handle de liaison compatible à partir d’une seule entrée de serveur.
À partir du vecteur retourné des handles de liaison de serveur, l’application cliente peut utiliser ses propres critères pour sélectionner des handles de liaison individuels, ou l’application peut appeler la fonction RpcNsBindingSelect pour sélectionner un handle de liaison. Les fonctions RpcBindingToStringBinding et RpcStringBindingParse sont utiles pour un client qui crée ses propres critères de sélection.

L’application cliente peut utiliser le handle de liaison sélectionné pour tenter d’effectuer un appel de procédure distante au serveur. Si le client ne parvient pas à établir une relation avec le serveur, il peut sélectionner un autre handle de liaison à partir du vecteur. Lorsque tous les handles de liaison dans le vecteur ont été utilisés, l’application cliente appelle à nouveau RpcNsBindingLookupNext .

Chaque fois que le client appelle RpcNsBindingLookupNext, la fonction retourne un autre vecteur de handles de liaison. Les handles de liaison retournés dans chaque vecteur ne sont pas triés. Les vecteurs retournés par plusieurs appels à cette fonction ne sont également pas triés.

Un client appelle la fonction RpcNsBindingInqEntryName pour obtenir le nom d’entrée du serveur de base de données name-service d’où provient la liaison.

Lorsque la recherche atteint la fin de la base de données name-service, RpcNsBindingLookupNext retourne une status de RPC_S_NO_MORE_BINDINGS et retourne une valeur BindingVecnull.

La fonction RpcNsBindingLookupNext alloue le stockage pour les données référencées par le paramètre BindingVec retourné. Lorsqu’une application cliente se termine avec le vecteur, elle doit appeler la fonction RpcBindingVectorFree pour libérer le stockage. Chaque appel à RpcNsBindingLookupNext nécessite un appel correspondant à RpcBindingVectorFree.

Le client est responsable de l’appel de la fonction RpcNsBindingLookupDone pour supprimer le contexte de recherche, ou si vous souhaitez que l’application démarre une nouvelle recherche de serveurs compatibles.

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

Voir aussi

RpcBindingToStringBinding

RpcBindingVectorFree

RpcNsBindingInqEntryName

RpcNsBindingLookupBegin

RpcNsBindingLookupDone

RpcStringBindingParse