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 .
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 |
---|---|
|
La llamada se realizó correctamente. |
|
No más enlaces. |
|
El nombre del servicio no está disponible. |
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.
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.
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 |