Função RpcServerUseProtseqIfExW (rpcdce.h)
A função
Sintaxe
RPC_STATUS RpcServerUseProtseqIfExW(
RPC_WSTR Protseq,
unsigned int MaxCalls,
RPC_IF_HANDLE IfSpec,
void *SecurityDescriptor,
PRPC_POLICY Policy
);
Parâmetros
Protseq
Ponteiro para um identificador de cadeia de caracteres da sequência de protocolo a ser registrado na biblioteca de tempo de execução do RPC.
MaxCalls
Comprimento da fila de pendências para a sequência de protocolo ncacn_ip_tcp. Todas as outras sequências de protocolo ignoram esse parâmetro. Use RPC_C_PROTSEQ_MAX_REQS_DEFAULT para especificar o valor padrão. Consulte Comentários.
IfSpec
Interface que contém informações de ponto de extremidade a serem usadas na criação de uma associação para a sequência de protocolo especificada no parâmetro protseq
SecurityDescriptor
Ponteiro para um parâmetro opcional fornecido para o subsistema de segurança. Usado apenas para ncacn_np e sequências de protocolo ncalrpc. Todas as outras sequências de protocolo ignoram esse parâmetro. Não é recomendável usar um descritor de segurança no ponto de extremidade para tornar um servidor seguro. Esse parâmetro não aparece na especificação DCE para essa API.
Policy
Ponteiro para a estrutura de RPC_POLICY, que contém sinalizadores para restringir a alocação de porta para portas dinâmicas e que permitem que computadores multihomed se associem seletivamente a cartões de interface de rede.
Valor de retorno
Valor | Significado |
---|---|
|
A chamada foi bem-sucedida. |
|
O ponto de extremidade dessa sequência de protocolo não é especificado no arquivo IDL. |
|
Não há suporte para a sequência de protocolos neste host. |
|
A sequência de protocolo é inválida. |
|
O formato do ponto de extremidade é inválido. |
|
O sistema está sem memória. |
|
O descritor de segurança é inválido. |
Observações
Os parâmetros e efeitos de RpcServerUseProtseqIfEx estendem os de RpcServerUseProtseqIf. A diferença é o parâmetro Policy, que permite restringir a alocação de porta para portas dinâmicas e permite que computadores multihomed se associem seletivamente a cartões de interface de rede.
Definir o campo NICFlags da estrutura de RPC_POLICY como 0 torna essa API estendida funcionalmente equivalente ao original RpcServerUseProtseqIfe o servidor será associado a NICs com base nas configurações no registro do sistema. Para obter informações sobre como as configurações do Registro definem as portas de Internet e intranet disponíveis, consulte Configurando o Registro para Alocações de Porta ede Associação Seletiva.
Para receber solicitações de chamada de procedimento remoto, um servidor deve registrar pelo menos uma sequência de protocolo com a biblioteca de tempo de execução RPC. Um aplicativo de servidor pode chamar essa rotina várias vezes para registrar sequências de protocolo adicionais.
Para cada sequência de protocolo registrada por um servidor, a biblioteca de tempo de execução do RPC cria um ou mais pontos de extremidade por meio dos quais o servidor recebe solicitações de chamada de procedimento remoto. A biblioteca de tempo de execução RPC cria pontos de extremidade diferentes para cada sequência de protocolo. No entanto, cada interface no processo é acessível por meio de qualquer ponto de extremidade. Para obter mais informações, consulte Como escrever um cliente ou servidor RPC seguro.
Para maxcalls, o valor fornecido pelo aplicativo é apenas uma dica. O tempo de execução do RPC ou o provedor de Soquetes do Windows pode substituir o valor. Por exemplo, no Windows XP ou no Windows 2000 Professional, o valor é limitado a 5. Valores maiores que 5 são ignorados e 5 são usados. No Windows Server 2003 e no Windows 2000 Server, o valor será respeitado.
Os aplicativos devem ter cuidado para passar valores razoáveis em maxcalls. Valores grandes no Servidor, Servidor Avançado ou Servidor datacenter podem fazer com que uma grande quantidade de memória de pool não paginado seja usada. Usar um valor muito pequeno também é desfavorável, pois pode resultar em pacotes TCP SYN sendo atendidos pelo TCP RST do servidor se a fila de pendências for esgotada. Um desenvolvedor de aplicativos deve equilibrar os requisitos de volume de memória versus escalabilidade ao determinar o valor adequado para maxcalls.
Quando o computador está configurado para usar a associação seletiva, o retorno bem-sucedido não garante que o servidor tenha criado pontos de extremidade para todos os adaptadores de rede presentes no computador. O tempo de execução do RPC pode não escutar alguns adaptadores de rede, dependendo das configurações de associação seletiva. Além disso, se uma interface ainda não recebeu um endereço IP usando DHCP, o servidor RPC não escuta no adaptador de rede até que um endereço DHCP seja atribuído a ele. Um retorno bem-sucedido implica que o servidor está escutando em pelo menos um adaptador de rede; a lista completa dos identificadores de associação sobre os quais chamadas de procedimento remoto podem ser recebidas pode ser obtida com uma chamada para a função RpcServerInqBindings.
Para registrar todas as sequências de protocolo do arquivo IDL, um servidor chama RpcServerUseAllProtseqsIfEx. Para obter mais informações, consulte Server-Side Binding. Para obter uma lista de sequências de protocolo compatíveis com o Microsoft RPC, consulte String Binding.
Nota
O cabeçalho rpcdce.h define RpcServerUseProtseqIfEx 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 XP [somente aplicativos da área de trabalho] |
servidor com suporte mínimo | Windows Server 2003 [somente aplicativos da área de trabalho] |
da Plataforma de Destino |
Windows |
cabeçalho | rpcdce.h (inclua Rpc.h) |
biblioteca | Rpcrt4.lib |
de DLL |
Rpcrt4.dll |
Consulte também
Gravando um cliente ou servidor RPC seguro