Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Um aplicativo de servidor pode parar de escutar clientes chamando RpcMgmtStopServerListening e RpcServerUnregisterIfou simplesmente saindo do processo de host. Ambos os métodos são aceitáveis. Se o servidor seguir a primeira abordagem, ele deve implementar as seguintes etapas:
A função de servidor RpcServerListen não retorna ao programa de chamada até que ocorra uma exceção ou até que uma chamada para RpcMgmtStopServerListening ocorra. Por padrão, apenas outro thread de servidor tem permissão para interromper o servidor RPC usando RpcMgmtStopServerListening. Os clientes que tentarem parar o servidor receberão o erro RPC_S_ACCESS_DENIED. No entanto, é possível configurar o RPC para permitir que alguns ou todos os clientes desliguem o servidor. Consulte RpcMgmtStopServerListening para obter detalhes.
Você também pode fazer com que o aplicativo cliente faça uma chamada de procedimento remoto para uma rotina de desligamento no servidor. A rotina de encerramento invoca RpcMgmtStopServerListening e RpcServerUnregisterIf. Este aplicativo de programa de exemplo tutorial usa essa abordagem adicionando uma nova função remota, Shutdown, ao arquivo Hellop.c.
Na função Shutdown, o único parâmetro nulo para RpcMgmtStopServerListening indica que a aplicação local deve parar de atender chamadas de procedimento remoto. Os dois parâmetros nulos para RpcServerUnregisterIf são curingas, indicando que todas as interfaces devem ser desregistradas. O parâmetro FALSE indica que a interface deve ser removida do registro imediatamente, em vez de aguardar a conclusão de chamadas pendentes.
/* add this function to hellop.c */
void Shutdown(void)
{
RPC_STATUS status;
status = RpcMgmtStopServerListening(NULL);
if (status)
{
exit(status);
}
status = RpcServerUnregisterIf(NULL, NULL, FALSE);
if (status)
{
exit(status);
}
} //end Shutdown