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.
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 |
---|---|
|
A chamada foi bem-sucedida. |
|
Não havia nada para exportar. |
|
O identificador de associação era inválido. |
|
Esse era o tipo errado de associação para a operação. |
|
A sintaxe do nome é inválida. |
|
Não há suporte para a sintaxe de nome. |
|
O nome está incompleto. |
|
Nenhum privilégio para a operação name-service. |
|
O serviço de nome está indisponível. |
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:
- Registre uma ou mais sequências de protocolo com a biblioteca de tempo de execução RPC local chamando uma das seguintes funções:
- Obtenha uma lista de associações de servidor chamando a função RpcServerInqBindings .
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 |