Função RpcEpRegisterNoReplace (rpcdce.h)

A função RpcEpRegisterNoReplace adiciona informações de endereço de servidor ao banco de dados local do mapa de ponto de extremidade.

Sintaxe

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

Parâmetros

IfSpec

Interface a ser registrada com o banco de dados de mapa de ponto de extremidade local.

BindingVector

Ponteiro para um vetor de identificadores de associação sobre os quais o servidor pode receber chamadas de procedimento remoto.

UuidVector

Ponteiro para um vetor de UUIDs de objeto oferecidos pelo servidor. O aplicativo de servidor constrói esse vetor.

Um valor de parâmetro nulo indica que não há UUIDs de objeto para registrar.

Annotation

Ponteiro para o comentário de cadeia de caracteres aplicado a cada elemento de produto cruzado adicionado ao banco de dados de mapa de ponto de extremidade local. A cadeia de caracteres pode ter até 64 caracteres, incluindo o caractere de terminação nula. Especifique um valor nulo ou uma cadeia de caracteres terminada em nulo ("\0") se não houver nenhuma cadeia de caracteres de anotação.

A cadeia de caracteres de anotação é usada por aplicativos somente para informações. O RPC não usa essa cadeia de caracteres para determinar com qual instância de servidor um cliente se comunica ou para enumerar elementos no banco de dados de mapa de ponto de extremidade.

Valor retornado

Valor Significado
RPC_S_OK
A chamada foi bem-sucedida.
RPC_S_NO_BINDINGS
Sem associações.
RPC_S_INVALID_BINDING
O identificador de associação era inválido.
RPC_S_WRONG_KIND_OF_BINDING
Esse era o tipo errado de associação para a operação.
 
Nota Para obter uma lista de códigos de erro válidos, consulte RPC Return Values.
 

Comentários

A função RpcEpRegisterNoReplace adiciona entradas ao banco de dados de mapa de ponto de extremidade do host local. Essa função não substitui entradas de banco de dados existentes.

Um servidor usa RpcEpRegisterNoReplace em vez de RpcEpRegister quando várias instâncias do servidor serão executadas no mesmo host. Em outras palavras, use essa função quando mais de uma instância de servidor oferecer a mesma interface UUID, UUID de objeto e sequência de protocolo a qualquer momento.

Como as entradas não são substituídas ao chamar RpcEpRegisterNoReplace, os servidores devem cancelar o registro antes de deixarem de ser executados. Caso contrário, os dados obsoletos serão acumulados sempre que uma instância de servidor parar de ser executada sem chamar RpcEpUnregister. Entradas obsoletas aumentam a probabilidade de um cliente receber pontos de extremidade para servidores inexistentes. O cliente gastará tempo tentando se comunicar com um servidor inexistente antes de obter outro ponto de extremidade.

Um servidor pode usar RpcEpRegister e RpcEpRegisterNoReplace para registrar entradas no banco de dados mapeador do ponto de extremidade. Anteriormente ao Windows 2000, duas funções estavam disponíveis para permitir que um servidor substituísse entradas obsoletas no banco de dados mapeador de ponto de extremidade deixado de instâncias de servidor anteriores que não estão mais em execução. O banco de dados mapeador de ponto de extremidade remove automaticamente as entradas registradas por uma instância de servidor assim que o servidor para de funcionar. No entanto, os servidores não têm permissão para substituir as entradas do mapeador de ponto de extremidade de outro servidor para fins de segurança. Portanto, RpcEpRegister e RpcEpRegisterNoReplace executam em grande parte a mesma funcionalidade.

Um aplicativo de servidor chama RpcEpRegister para registrar pontos de extremidade especificados chamando qualquer uma das seguintes funções:

Se o servidor também exportar para o banco de dados name-service, o servidor chamará RpcEpRegister com os mesmos valores IfSpec, BindingVector e UuidVector usados ao chamar a função RpcNsBindingExport .

Se uma sequência de protocolo for usada sem especificar um ponto de extremidade, a biblioteca de tempo de execução RPC gerará automaticamente um ponto de extremidade dinâmico. Nesse caso, o servidor pode chamar RpcServerInqBindings seguido por RpcEpRegisterNoReplace para se disponibilizar para vários clientes. Caso contrário, o servidor iniciado automaticamente é conhecido apenas pelo cliente para o qual o servidor foi iniciado.

Cada elemento adicionado ao banco de dados de mapa de ponto de extremidade contém logicamente o seguinte:

  • Interface UUID
  • Versão da interface (principal e secundária)
  • Identificador de associação
  • UUID do objeto (opcional)
  • Anotação (opcional)
RpcEpRegisterNoReplace cria um produto cruzado dos parâmetros IfSpec, BindingVector e UuidVector e adiciona cada elemento no produto cruzado como um registro separado no banco de dados de mapa de ponto de extremidade.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho rpcdce.h (inclua Rpc.h)
Biblioteca Rpcrt4.lib
DLL Rpcrt4.dll

Confira também

RpcBindingFromStringBinding

RpcEpRegister

RpcEpUnregister

RpcNsBindingExport

RpcServerInqBindings

RpcServerUseAllProtseqs

RpcServerUseAllProtseqsIf

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf