Función RpcEpRegisterNoReplace (rpcdce.h)

La función RpcEpRegisterNoReplace agrega información de dirección de servidor a la base de datos local de mapa de puntos de conexión.

Sintaxis

RPC_STATUS RpcEpRegisterNoReplace(
  RPC_IF_HANDLE      IfSpec,
  RPC_BINDING_VECTOR *BindingVector,
  UUID_VECTOR        *UuidVector,
  RPC_CSTR           Annotation
);

Parámetros

IfSpec

Interfaz para registrarse con la base de datos local de mapa de puntos de conexión.

BindingVector

Puntero a un vector de identificadores de enlace sobre los que el servidor puede recibir llamadas a procedimientos remotos.

UuidVector

Puntero a un vector de UUID de objeto ofrecido por el servidor. La aplicación de servidor construye este vector.

Un valor de parámetro null indica que no hay UUID de objeto que se van a registrar.

Annotation

Puntero al comentario de cadena de caracteres aplicado a cada elemento entre productos agregado a la base de datos local del mapa del punto de conexión. La cadena puede tener hasta 64 caracteres, incluido el carácter de terminación null. Especifique un valor NULL o una cadena terminada en NULL ("\0") si no hay ninguna cadena de anotación.

Las aplicaciones usan la cadena de anotación solo para obtener información. RPC no usa esta cadena para determinar con qué instancia de servidor se comunica un cliente o para enumerar los elementos de la base de datos de mapa de puntos de conexión.

Valor devuelto

Valor Significado
RPC_S_OK
La llamada se realizó correctamente.
RPC_S_NO_BINDINGS
Sin enlaces.
RPC_S_INVALID_BINDING
El identificador de enlace no era válido.
RPC_S_WRONG_KIND_OF_BINDING
Este era el tipo incorrecto de enlace para la operación.
 
Nota Para obtener una lista de códigos de error válidos, consulte Rpc Return Values.
 

Comentarios

La función RpcEpRegisterNoReplace agrega entradas a la base de datos de mapa de puntos de conexión del host local. Esta función no reemplaza las entradas de base de datos existentes.

Un servidor usa RpcEpRegisterNoReplace en lugar de RpcEpRegister cuando varias instancias del servidor se ejecutarán en el mismo host. En otras palabras, use esta función cuando más de una instancia de servidor ofrecerá el mismo UUID de interfaz, UUID de objeto y secuencia de protocolo en cualquier momento.

Dado que las entradas no se reemplazan al llamar a RpcEpRegisterNoReplace, los servidores deben anular su registro antes de dejar de ejecutarse. De lo contrario, los datos obsoletos se acumulan cada vez que una instancia del servidor deja de ejecutarse sin llamar a RpcEpUnregister. Las entradas obsoletas aumentan la probabilidad de que un cliente reciba puntos de conexión a servidores inexistentes. El cliente dedicará tiempo a intentar comunicarse con un servidor inexistente antes de obtener otro punto de conexión.

Un servidor puede usar RpcEpRegister y RpcEpRegisterNoReplace para registrar entradas en la base de datos del asignador de puntos de conexión. Antes de Windows 2000, había dos funciones disponibles para permitir que un servidor sobrescriba entradas obsoletas en la base de datos del asignador de puntos de conexión dejó de instancias de servidor anteriores que ya no se están ejecutando. La base de datos del asignador de puntos de conexión quita automáticamente las entradas registradas por una instancia del servidor en cuanto el servidor deja de funcionar. Sin embargo, no se permite que los servidores reemplacen las entradas del asignador de puntos de conexión de otro servidor con fines de seguridad. Por lo tanto, RpcEpRegister y RpcEpRegisterNoReplace realizan en gran medida la misma funcionalidad.

Una aplicación de servidor llama a RpcEpRegister para registrar los puntos de conexión especificados mediante una llamada a cualquiera de las funciones siguientes:

Si el servidor también exporta a la base de datos name-service, el servidor llama a RpcEpRegister con los mismos valores IfSpec, BindingVector y UuidVector usados al llamar a la función RpcNsBindingExport .

Si se usa una secuencia de protocolo sin especificar un punto de conexión, la biblioteca en tiempo de ejecución rpc genera automáticamente un punto de conexión dinámico. En este caso, el servidor puede llamar a RpcServerInqBindings seguido de RpcEpRegisterNoReplace para que esté disponible para varios clientes. De lo contrario, el servidor iniciado automáticamente solo se conoce al cliente para el que se inició el servidor.

Cada elemento agregado a la base de datos de mapa de puntos de conexión contiene lógicamente lo siguiente:

  • UUID de interfaz
  • Versión de interfaz (principal y secundaria)
  • Identificador de enlace
  • UUID de objeto (opcional)
  • Anotación (opcional)
RpcEpRegisterNoReplace crea un producto cruzado a partir de los parámetros IfSpec, BindingVector y UuidVector y agrega cada elemento del producto cruzado como un registro independiente en la base de datos de mapa de puntos de conexión.

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 rpcdce.h (incluir Rpc.h)
Library Rpcrt4.lib
Archivo DLL Rpcrt4.dll

Consulte también

RpcBindingFromStringBinding

RpcEpRegister

RpcEpUnregister

RpcNsBindingExport

RpcServerInqBindings

RpcServerUseAllProtseqs

RpcServerUseAllProtseqsIf

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf