Compartilhar via


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.

Observação Essa função não tem suporte 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 os identificadores de associação e UUIDs de objeto são exportados. Você não pode 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 exportados. Um valor nulo indica que não há identificadores de associação para exportar (somente UUIDs de objeto devem ser exportadas).

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 de retorno

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
Este foi o tipo errado de associação para a operação.
RPC_S_INVALID_NAME_SYNTAX
A sintaxe de nome é inválida.
RPC_S_UNSUPPORTED_NAME_SYNTAX
A sintaxe de nome não tem suporte.
RPC_S_INCOMPLETE_NAME
O nome está incompleto.
RPC_S_NO_NS_PRIVILEGE
Nenhum privilégio para a operação de name-service.
RPC_S_NAME_SERVICE_UNAVAILABLE
O serviço de nome não está disponível.
 
Observação Para obter uma lista de códigos de erro válidos, consulte RPC Return Values.
 

Observações

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

Em vigor com o Windows 2000, o ambiente de tempo de execução do RPC usa o Active Directory como seu banco de dados de serviço de nome. 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 listas de autorização e controle de acesso.

Para exportar uma interface, o aplicativo de servidor chama a rotina RpcNsBindingExport com uma interface e os identificadores de associação de servidor 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 exportá-los separadamente. Se a entrada de banco de dados de serviço de nome 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 o RpcServerUseAllProtseqs ou RpcServerUsePro A função do também deve se registrar no banco de dados local do mapa de pontos de extremidade chamando RpcEpRegister ou RpcEpRegisterNoReplace.

Um servidor não é necessário para exportar nenhuma de suas interfaces para o banco de dados de serviço de nome. Quando um servidor não exporta, somente os clientes que sabem de forma privada as informações de associação do 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 o 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 as informações de associação e UUIDs de objeto quando esses dados forem diferentes das informações de associação já 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, a exportação apenas de UUIDs para uma entrada não existente não tem efeito e a não comunicação de todos os identificadores de associação exclui a entrada.

Nota

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 do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 2000 Professional [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows 2000 Server [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
cabeçalho rpcnsi.h (inclua Rpc.h)
biblioteca Rpcns4.lib
de DLL Rpcns4.dll

Consulte também

RpcBindingFromStringBinding

RpcEpRegister

RpcEpRegisterNoReplace

RpcNsBindingUnexport

RpcServerInqBindings

RpcServerUseAllProtseqs

RpcServerUseAllProtseqsIf

RpcServerUseProtseq

RpcServerUseProtseqEp

RpcServerUseProtseqIf