Função RpcNsBindingExportA (rpcnsi.h)

A função RpcNsBindingExport estabelece uma entrada de serviço de nome – banco de dados com vários identificadores de associação e vários objetos para um servidor.

Nota Não há suporte para essa função no Windows Vista e em sistemas operacionais posteriores.
 

Sintaxe

RPC_STATUS RpcNsBindingExportA(
  unsigned long      EntryNameSyntax,
  RPC_CSTR           EntryName,
  RPC_IF_HANDLE      IfSpec,
  RPC_BINDING_VECTOR *BindingVec,
  UUID_VECTOR        *ObjectUuidVec
);

Parâmetros

EntryNameSyntax

Sintaxe de EntryName.

Para usar a sintaxe especificada na entrada de valor do Registro HKEY_LOCAL_MACHINE\Software\Microsoft\Rpc\NameService\DefaultSyntax, forneça um valor de RPC_C_NS_SYNTAX_DEFAULT.

EntryName

Ponteiro para o nome de entrada para o qual identificadores de associação e UUIDs de objeto são exportados. Não é possível fornecer uma cadeia de caracteres nula ou vazia. O cliente e o servidor devem usar o mesmo nome de entrada.

IfSpec

Estrutura de dados gerada por stub especificando a interface a ser exportada. Um valor nulo indica que não há identificadores de associação para exportar (somente UUIDs de objeto devem ser exportados) e BindingVec é ignorado.

BindingVec

Ponteiro para associações de servidor a serem exportadas. Um valor nulo indica que não há identificadores de associação para exportar (somente UUIDs de objeto devem ser exportados).

ObjectUuidVec

Ponteiro para um vetor de UUIDs de objeto oferecidos pelo servidor. O aplicativo de servidor constrói esse vetor. Um valor nulo indica que não há UUIDs de objeto para exportar (somente identificadores de associação devem ser exportados).

Valor retornado

Valor Significado
RPC_S_OK
A chamada foi bem-sucedida.
RPC_S_NOTHING_TO_EXPORT
Não havia nada para exportar.
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.
RPC_S_INVALID_NAME_SYNTAX
A sintaxe do nome é inválida.
RPC_S_UNSUPPORTED_NAME_SYNTAX
Não há suporte para a sintaxe de nome.
RPC_S_INCOMPLETE_NAME
O nome está incompleto.
RPC_S_NO_NS_PRIVILEGE
Nenhum privilégio para a operação name-service.
RPC_S_NAME_SERVICE_UNAVAILABLE
O serviço de nome está indisponível.
 
Nota Para obter uma lista de códigos de erro válidos, consulte RPC Return Values.
 

Comentários

A função RpcNsBindingExport permite que um aplicativo de servidor ofereça publicamente uma interface no banco de dados name-service para uso por qualquer aplicativo cliente.

A partir do Windows 2000, o ambiente de tempo de execução RPC usa o Active Directory como seu banco de dados name-service. Isso significa que as entradas exportadas autorizadas persistem no serviço de nome e ficam visíveis mesmo após a reinicialização. As exportações não autorizadas não persistem. Consulte Controle de Acesso na seção Segurança do SDK (Platform Software Development Kit) para obter mais informações sobre autorização e listas de Controle de Acesso.

Para exportar uma interface, o aplicativo de servidor chama a rotina RpcNsBindingExport com uma interface e a associação de servidor manipula que um cliente pode usar para acessar o servidor. Um aplicativo de servidor também chama a função RpcNsBindingExport para oferecer publicamente o objeto UUID(s) de recursos que ele oferece, se houver, no banco de dados name-service.

Um servidor pode exportar interfaces e objetos em uma única chamada para RpcNsBindingExport ou pode exportá-los separadamente. Se a entrada de banco de dados name-service especificada por EntryName não existir, RpcNsBindingExport tentará criá-la. Nesse caso, o aplicativo de servidor deve ter o privilégio de criar a entrada. Além de chamar RpcNsBindingExport, um servidor que chamou a função RpcServerUseAllProtseqs ou RpcServerUseProtseq também deve se registrar no banco de dados de mapa de ponto de extremidade local chamando RpcEpRegister ou RpcEpRegisterNoReplace.

Um servidor não é necessário para exportar nenhuma de suas interfaces para o banco de dados name-service. Quando um servidor não exporta, somente os clientes que sabem de forma privada as informações de associação desse servidor podem acessar suas interfaces. Por exemplo, um cliente que tem as informações necessárias para construir uma associação de cadeia de caracteres pode chamar rpcBindingFromStringBinding para criar um identificador de associação para fazer chamadas de procedimento remoto para um servidor.

Antes de chamar RpcNsBindingExport, um servidor deve fazer o seguinte:

O vetor retornado da função RpcServerInqBindings torna-se o parâmetro Binding para RpcNsBindingExport. Para impedir que uma associação seja exportada, defina o elemento vetor selecionado como um valor nulo.

Se um servidor exportar para a mesma entrada de banco de dados de serviço de nome várias vezes, a segunda e as chamadas subsequentes para RpcNsBindingExport adicionarão as informações de associação e UUIDs de objeto quando esses dados forem diferentes das informações de associação que já estão na entrada do servidor. Os dados existentes não são removidos da entrada.

Para remover identificadores de associação e UUIDs de objeto do banco de dados name-service, um aplicativo de servidor chama a função RpcNsBindingUnexport .

Uma entrada de servidor deve ter pelo menos um identificador de associação para existir. Como resultado, exportar apenas UUIDs para uma entrada não existente não tem efeito e cancelar a exportação de todos os identificadores de associação exclui a entrada.

Observação

O cabeçalho rpcnsi.h define RpcNsBindingExport como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.

Requisitos

   
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 rpcnsi.h (inclua Rpc.h)
Biblioteca Rpcns4.lib
DLL Rpcns4.dll

Confira também

RpcBindingFromStringBinding

RpcEpRegister

RpcEpRegisterNoReplace

RpcNsBindingUnexport

RpcServerInqBindings

RpcServerUseAllProtseqs

RpcServerUseAllProtseqsIf

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf