Função RmShutdown (restartmanager.h)
Inicia o desligamento de aplicativos. Essa função só pode ser chamada do instalador que iniciou a sessão do Restart Manager usando a função RmStartSession .
Sintaxe
DWORD RmShutdown(
[in] DWORD dwSessionHandle,
[in] ULONG lActionFlags,
[in, optional] RM_WRITE_STATUS_CALLBACK fnStatus
);
Parâmetros
[in] dwSessionHandle
Um identificador para uma sessão existente do Gerenciador de Reinicialização.
[in] lActionFlags
Uma ou mais opções de RM_SHUTDOWN_TYPE que configuram o desligamento de componentes. Os valores a seguir podem ser combinados por um operador OR para especificar que aplicativos e serviços sem resposta devem ser forçados a desligar se, e somente se, todos os aplicativos tiverem sido registrados para reinicialização.
Valor | Significado |
---|---|
|
Force aplicativos e serviços sem resposta a serem desligados após o período de tempo limite. Um aplicativo que não responde a uma solicitação de desligamento é forçado a ser desligado dentro de 30 segundos. Um serviço que não responde a uma solicitação de desligamento é forçado a ser desligado após 20 segundos. |
|
Desligue os aplicativos se e somente se todos os aplicativos tiverem sido registrados para reinicialização usando a função RegisterApplicationRestart . Se nenhum processo ou serviço não puder ser reiniciado, nenhum processo ou serviço será desligado. |
[in, optional] fnStatus
Um ponteiro para uma função RM_WRITE_STATUS_CALLBACK que é usada para comunicar status detalhadas enquanto essa função está em execução. Se FOR NULL, nenhuma status será fornecida.
Retornar valor
Esse é o erro mais recente recebido. A função pode retornar um dos códigos de erro do sistema definidos em Winerror.h.
Valor | Significado |
---|---|
|
Todas as operações de desligamento, reinicialização e retorno de chamada foram concluídas com êxito. |
|
Nenhuma ação de desligamento foi executada. Um ou mais processos ou serviços exigem que uma reinicialização do sistema seja desligada. Esse código de erro é retornado quando o Gerenciador de Reinicialização detecta que uma reinicialização do sistema é necessária antes de desligar qualquer aplicativo. |
|
Alguns aplicativos não puderam ser desligados. O AppStatus das estruturas RM_PROCESS_INFO retornadas pela função RmGetList contêm informações de status atualizadas. |
|
Esse valor de erro é retornado pela função RmShutdown quando a solicitação para cancelar uma operação é bem-sucedida. |
|
Uma função do Gerenciador de Reinicialização não pôde obter um mutex de gravação do Registro no tempo alocado. Uma reinicialização do sistema é recomendada porque o uso adicional do Gerenciador de Reinicialização provavelmente falhará. |
|
Um ou mais argumentos não estão corretos. Esse valor de erro será retornado pela função Gerenciador de Reinicialização se um ponteiro NULL ou 0 for passado em um parâmetro que exija um valor não nulo e não zero. |
|
Uma operação não pôde ler ou gravar no registro. |
|
Não foi possível concluir uma operação do Gerenciador de Reinicialização porque não há memória suficiente disponível. |
|
Não existe nenhuma sessão do Gerenciador de Reinicialização para o identificador fornecido. |
Comentários
A função RmShutdown chama RmGetList e atualiza a lista de processos atualmente usando recursos registrados antes de tentar desligar todos os processos. A função RmShutdown tenta desligar os processos usando recursos registrados na lista mais atual. A função RmShutdown atualiza o membro AppStatus das estruturas RM_PROCESS_INFO retornadas pela função RmGetList com informações detalhadas de status.
O Gerenciador de Reinicialização respeita os privilégios que separam diferentes sessões de usuário ou terminal. Um instalador em execução como um serviço com privilégios localSystem não pode desligar nem reiniciar nenhum aplicativo em outra sessão de usuário ou terminal. Os instaladores devem implementar métodos personalizados para desligar e reiniciar aplicativos que estão em execução em outras sessões. Um método seria iniciar um novo processo de instalador na outra sessão para executar operações de desligamento e reinicialização.
Os instaladores sempre devem reiniciar aplicativos e serviços usando a função RmRestart mesmo quando a função RmShutdown retorna um erro indicando que nem todos os aplicativos e serviços podem ser desligados.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2008 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | restartmanager.h |
Biblioteca | Rstrtmgr.lib |
DLL | Rstrtmgr.dll |