Compartilhar via


Função RpcServerRegisterIf3 (rpcdce.h)

A função RpcServerRegisterIf3 registra uma interface com a biblioteca de tempo de execução RPC.

Sintaxe

RPC_STATUS RpcServerRegisterIf3(
  [in]           RPC_IF_HANDLE      IfSpec,
  [in, optional] UUID               *MgrTypeUuid,
  [in, optional] RPC_MGR_EPV        *MgrEpv,
  [in]           unsigned int       Flags,
  [in]           unsigned int       MaxCalls,
  [in]           unsigned int       MaxRpcSize,
  [in, optional] RPC_IF_CALLBACK_FN *IfCallback,
  [in, optional] void               *SecurityDescriptor
);

Parâmetros

[in] IfSpec

Estrutura gerada por MIDL que indica a interface a ser registrada.

[in, optional] MgrTypeUuid

Ponteiro para um UUID de tipo a ser associado ao parâmetro MgrEpv . Especificar um valor de parâmetro nulo (ou um UUID nulo) registra IfSpec com um UUID de tipo nulo.

[in, optional] MgrEpv

EPV (vetor de ponto de entrada) das rotinas de gerente. Para usar o EPV padrão gerado por MIDL, especifique um valor nulo . Para obter mais informações, consulte RPC_MGR_EPV.

[in] Flags

Sinalizadores. Para obter uma lista de valores de sinalizador, consulte Sinalizadores de registro de interface.

[in] MaxCalls

Número máximo de solicitações de chamada de procedimento remoto simultâneas que o servidor pode aceitar em uma interface de escuta automática . O parâmetro MaxCalls só é aplicável em uma interface de escuta automática e é ignorado em interfaces que não são de escuta automática. A biblioteca de tempo de execução RPC faz seu melhor esforço para garantir que o servidor não permita mais solicitações de chamada simultâneas do que o número de chamadas especificadas em MaxCalls. O número real pode ser maior e pode variar para cada sequência de protocolo.

As chamadas em outras interfaces são regidas pelo valor do parâmetro MaxCalls em todo o processo especificado na chamada de função RpcServerListen .

Se o número de chamadas simultâneas não for uma preocupação, você poderá obter um desempenho ligeiramente melhor do lado do servidor especificando o valor padrão usando RPC_C_LISTEN_MAX_CALLS_DEFAULT. Isso alivia o ambiente de tempo de execução do RPC de impor uma restrição desnecessária.

[in] MaxRpcSize

Tamanho máximo de blocos de dados de entrada, em bytes. Esse parâmetro pode ser usado para ajudar a evitar ataques de negação de serviço mal-intencionados. Se o bloco de dados de uma chamada de procedimento remoto for maior que MaxRpcSize, a biblioteca de tempo de execução RPC rejeitará a chamada e enviará um erro de RPC_S_ACCESS_DENIED para o cliente. Especificar um valor de (unsigned int) –1 para esse parâmetro remove o limite do tamanho dos blocos de dados de entrada. Esse parâmetro não tem efeito sobre chamadas feitas pelo protocolo ncalrpc .

[in, optional] IfCallback

Função de retorno de chamada de segurança ou NULL para nenhum retorno de chamada. Cada interface registrada pode ter uma função de retorno de chamada diferente. Consulte os Comentários sobre RpcServerRegisterIf2.

[in, optional] SecurityDescriptor

Descritor de segurança para acessar a interface RPC. Cada interface registrada pode ter um descritor de segurança diferente.

Retornar valor

Retorna RPC_S_OK após o êxito.

Nota Para obter uma lista de códigos de erro válidos, consulte RPC Return Values.
 

Comentários

Os parâmetros e efeitos da função RpcServerRegisterIf3 estendem os da função RpcServerRegisterIf2 . A diferença é a capacidade de especificar um descritor de segurança para controlar o acesso à interface RPC registrada.

Se SecurityDescriptor e IfCallbackFn forem especificados, o descritor de segurança em SecurityDescriptor será verificado primeiro e o retorno de chamada em IfCallbackFn será chamado após a marcar de acesso em relação ao descritor de segurança passar.

Ao chamar RpcServerRegisterIf3 com SecurityDescriptor definido como NULL ou chamar RpcServerRegisterIf, RpcServerRegisterIf2 ou RpcServerRegisterIfEx para registrar uma interface, um descritor de segurança padrão será usado. O descritor de segurança padrão não permitirá o acesso de nenhum processo AppContainer à interface se o servidor RPC não for um processo AppContainer. O descritor de segurança padrão não permitirá o acesso de nenhum processo em outros processos AppContainer à interface se o servidor RPC for um processo AppContainer. O descritor de segurança padrão permitirá o acesso de processos normais, incluindo processos de baixa integridade.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 8 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2012 [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

Registrando interfaces

RpcGetAuthorizationContextForClient

RpcServerRegisterIf

RpcServerRegisterIf2

RpcServerRegisterIfEx

RpcServerUnregisterIf

RpcServerUnregisterIfEx