Función RpcNsBindingLookupNext (rpcnsi.h)

La función RpcNsBindingLookupNext devuelve una lista de identificadores de enlace compatibles para una interfaz especificada y, opcionalmente, un objeto .

Nota Esta función no se admite en Windows Vista ni en sistemas operativos posteriores.
 

Sintaxis

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

Parámetros

LookupContext

Identificador de servicio de nombre devuelto de la función RpcNsBindingLookupBegin .

BindingVec

Devuelve la dirección de un puntero a un vector de identificadores de enlace de servidor compatibles con el cliente.

Valor devuelto

Valor Significado
RPC_S_OK
La llamada se realizó correctamente.
RPC_S_NO_MORE_BINDINGS
No más enlaces.
RPC_S_NAME_SERVICE_UNAVAILABLE
El nombre del servicio no está disponible.
 
Nota Para obtener una lista de códigos de error válidos, consulte Rpc Return Values.
 

Comentarios

La función RpcNsBindingLookupNext devuelve un vector de identificadores de enlace de servidor compatibles con el cliente para un servidor que ofrece la interfaz y el UUID de objeto especificados por los parámetros IfSpec y ObjUuid en la función RpcNsBindingLookupBegin . (Compare esto con RpcNsBindingImportNext, que devuelve un único identificador de enlace de servidor compatible).

La función RpcNsBindingLookupNext solo se comunica con la base de datos name-service, no directamente con los servidores.

Efectivo con Windows 2000, el entorno RPC usa Active Directory como su base de datos name-service y el orden en el que el entorno en tiempo de ejecución realiza la búsqueda es el siguiente:

  • Busque en la caché local.
  • Si no se encuentra la entrada en la caché local, busque en Active Directory de esa máquina.
  • Si no se encuentra la entrada en el equipo local, envíe solicitudes de difusión a todos los demás servicios de Active Directory del dominio.

    Tenga en cuenta que si la entrada existe en Active Directory, pero no hay información asociada a la entrada, el entorno en tiempo de ejecución no emitirá esta solicitud de difusión.

En llamadas sucesivas, la función RpcNsBindingLookupNext recorre las entradas de la base de datos del servicio de nombres, recopilando identificadores de enlace de servidor compatibles con el cliente de cada entrada.

Cuando Microsoft Active Directory es la base de datos name-service, RpcNsBindingLookupNext recorre la base de datos solo si el nombre de entrada especificado es null y la entrada predeterminada (en el Registro) no está definida o vacía. Además, dado que no se permiten entradas mixtas en Active Directory, la función solo busca nombres de entrada de servidor, no nombres de grupo ni de perfil.

Cuando DCE Cell Directory Service (CDS) es la base de datos name-service y la entrada en la que comienza la búsqueda contiene identificadores de enlace además de nombres de grupo o perfil, RpcNsBindingLookupNext devuelve los identificadores de enlace de EntryName antes de buscar en el grupo o perfil. Esto significa que la función puede devolver un vector parcialmente completo antes de procesar los miembros del grupo o perfil.

El identificador de enlace compatible que se devuelve siempre contiene un UUID de objeto, cuyo valor depende del parámetro ObjUuid en la función RpcNsBindingImportBegin . Si se especificó un UUID de objeto no null , el identificador de enlace devuelto contiene ese UUID de objeto. Sin embargo, si se especificó un UUID de objeto null o un valor null , el UUID de objeto que se devuelve es el resultado de las siguientes posibilidades:

  • Si el servidor no exportó ningún UUID de objeto, el identificador de enlace devuelto contiene un UUID de objeto nulo.
  • Si el servidor exportó un UUID de objeto, el identificador de enlace devuelto contiene ese UUID de objeto.
  • Si el servidor exportó varios UUID de objeto, el identificador de enlace devuelto contiene uno de los UUID de objeto. La operación import-next selecciona el UUID de objeto devuelto de forma no determinista. Como resultado, se puede devolver un UUID de objeto diferente para cada identificador de enlace compatible desde una única entrada de servidor.
En el vector devuelto de identificadores de enlace de servidor, la aplicación cliente puede emplear sus propios criterios para seleccionar identificadores de enlace individuales o la aplicación puede llamar a la función RpcNsBindingSelect para seleccionar un identificador de enlace. Las funciones RpcBindingToStringBinding y RpcStringBindingParse serán útiles para un cliente que cree sus propios criterios de selección.

La aplicación cliente puede usar el identificador de enlace seleccionado para intentar realizar una llamada a procedimiento remoto al servidor. Si el cliente no puede establecer una relación con el servidor, puede seleccionar otro identificador de enlace del vector. Cuando se han usado todos los identificadores de enlace del vector, la aplicación cliente llama a RpcNsBindingLookupNext de nuevo.

Cada vez que el cliente llama a RpcNsBindingLookupNext, la función devuelve otro vector de identificadores de enlace. Los identificadores de enlace devueltos en cada vector no están ordenados. Los vectores devueltos de varias llamadas a esta función también no están ordenados.

Un cliente llama a la función RpcNsBindingInqEntryName para obtener el nombre de entrada del servidor de base de datos name-service del que procede el enlace.

Cuando la búsqueda llega al final de la base de datos name-service, RpcNsBindingLookupNext devuelve un estado de RPC_S_NO_MORE_BINDINGS y devuelve un valor BindingVec de NULL.

La función RpcNsBindingLookupNext asigna almacenamiento para los datos a los que hace referencia el parámetro BindingVec devuelto. Cuando una aplicación cliente finaliza con el vector, debe llamar a la función RpcBindingVectorFree para desasignar el almacenamiento. Cada llamada a RpcNsBindingLookupNext requiere una llamada correspondiente a RpcBindingVectorFree.

El cliente es responsable de llamar a la función RpcNsBindingLookupDone para eliminar el contexto de búsqueda, o si desea que la aplicación inicie una nueva búsqueda de servidores compatibles.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado rpcnsi.h (incluir Rpc.h)
Library Rpcns4.lib
Archivo DLL Rpcns4.dll

Consulte también

RpcBindingToStringBinding

RpcBindingVectorFree

RpcNsBindingInqEntryName

RpcNsBindingLookupBegin

RpcNsBindingLookupDone

RpcStringBindingParse