Função RpcServerInterfaceGroupCreate (rpcdce.h)

A função RpcServerInterfaceGroupCreate cria um grupo de interfaces do servidor RPC para o aplicativo de servidor. Esse grupo de interfaces especifica totalmente as interfaces, os pontos de extremidade e as propriedades ociosas de um aplicativo de servidor RPC. Depois de criado, um grupo de interfaces pode ser ativado e desativado conforme o aplicativo requer.

Sintaxe

RPC_STATUS RpcServerInterfaceGroupCreate(
  [in]  RPC_INTERFACE_TEMPLATE               *Interfaces,
  [in]  unsigned long                        NumIfs,
  [in]  RPC_ENDPOINT_TEMPLATE                *Endpoints,
  [in]  unsigned long                        NumEndpoints,
  [in]  unsigned long                        IdlePeriod,
  [in]  RPC_INTERFACE_GROUP_IDLE_CALLBACK_FN IdleCallbackFn,
  [in]  void                                 *IdleCallbackContext,
  [out] PRPC_INTERFACE_GROUP                 IfGroup
);

Parâmetros

[in] Interfaces

Um ponteiro para uma matriz de estruturas RPC_INTERFACE_TEMPLATE que definem as interfaces expostas pelo grupo de interfaces.

[in] NumIfs

O número de elementos em Interfaces.

[in] Endpoints

Um ponteiro para uma matriz de estruturas de RPC_ENDPOINT_TEMPLATE que definem os pontos de extremidade usados pelo grupo de interfaces.

[in] NumEndpoints

O número de elementos em Pontos de Extremidade.

[in] IdlePeriod

O período de tempo em segundos após o grupo de interface ficar ocioso que o runtime do RPC deve aguardar antes de invocar o retorno de chamada ocioso. 0 significa que o retorno de chamada é invocado imediatamente. INFINITE significa que o aplicativo de servidor não se importa com o estado ocioso do grupo de interfaces.

[in] IdleCallbackFn

Um retorno de chamada RPC_INTERFACE_GROUP_IDLE_CALLBACK_FN que o runtime do RPC invocará quando o grupo de interfaces ficar ocioso pelo período de tempo determinado em IdlePeriod. Só poderá ser NULL se IdlePeriod for INFINITE.

[in] IdleCallbackContext

Um ponteiro definido pelo usuário a ser passado para o retorno de chamada ocioso em IdleCallbackFn.

[out] IfGroup

Se tiver êxito, um ponteiro para um buffer RPC_INTERFACE_GROUP que recebe o identificador para o grupo de interfaces recém-criado. Se essa função falhar, IfGroup será indefinido.

Valor retornado

Valor Significado
RPC_S_OK
A chamada foi bem-sucedida.
 
Nota Para obter uma lista de códigos de erro válidos, consulte RPC Return Values.
 

Comentários

Opcionalmente, um aplicativo de servidor pode ser notificado quando um grupo de interfaces fica ocioso. Embora qualquer aplicativo possa aproveitar essa funcionalidade, ele é direcionado para desenvolvedores de serviço que gostariam de permitir que seu serviço parasse ocioso.

IdlePeriod impede que o runtime do RPC produza um grande número de notificações se o estado ocioso muda rapidamente e, no caso de serviços disparados, ajuda o serviço a evitar iniciar e parar desnecessariamente. Os desenvolvedores devem considerar o custo de inicialização e desligamento do serviço, a frequência esperada com a qual a nova atividade ocorrerá e o custo de manter o serviço ocioso ao selecionar esse valor. Um período ocioso baixo fará com que o serviço seja iniciado e interrompido com frequência à medida que uma nova atividade do cliente ocorre, enquanto um período ocioso alto fará com que o serviço consuma recursos sem executar um trabalho significativo.

Interfaces em um grupo de interfaces só podem ser chamadas em pontos de extremidade do mesmo grupo. Interfaces que não fazem parte de um grupo de interfaces não podem ser chamadas por pontos de extremidade que fazem parte de um grupo.

A atividade do servidor RPC nem sempre é visível para o aplicativo de servidor. Em alguns casos, simplesmente ter um cliente com uma conexão aberta com o servidor pode mantê-lo ativo mesmo que nenhuma chamada tenha sido enviada por um longo período de tempo. Os aplicativos de servidor não devem depender de nenhuma correlação entre o runtime do RPC declarando que o grupo está ocioso e o tempo desde que a última chamada foi expedida.

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

RpcServerInterfaceGroupActivate

RpcServerInterfaceGroupClose

RpcServerInterfaceGroupDeactivate

RpcServerInterfaceGroupInqBindings