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 name-service 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 servicio de nombre no está disponible.
 
Nota Para obtener una lista de códigos de error válidos, vea 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 servidores.

En vigor 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 memoria caché local.
  • Si no se encuentra la entrada en la memoria 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 entradas de base de datos de 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 busca solo nombres de entrada de servidor, no nombres de grupo o 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 distinto de 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 sola entrada de servidor.
Desde el vector devuelto de los 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 de 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 por 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

   
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 (incluya Rpc.h)
Library Rpcns4.lib
Archivo DLL Rpcns4.dll

Consulte también

RpcBindingToStringBinding

RpcBindingVectorFree

RpcNsBindingInqEntryName

RpcNsBindingLookupBegin

RpcNsBindingLookupDone

RpcStringBindingParse