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.
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 |
---|---|
|
L’appel a réussi. |
|
Plus de liaisons. |
|
Nom de service indisponible. |
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.
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.
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 |