Função RmRestart (restartmanager.h)
Reinicia aplicativos e serviços que foram desligados pela função RmShutdown e que foram registrados para serem reiniciados usando a função RegisterApplicationRestart . Essa função só pode ser chamada pelo instalador primário que chamou a função RmStartSession para iniciar a sessão do Gerenciador de Reinicialização.
Sintaxe
DWORD RmRestart(
[in] DWORD dwSessionHandle,
DWORD dwRestartFlags,
[in, optional] RM_WRITE_STATUS_CALLBACK fnStatus
);
Parâmetros
[in] dwSessionHandle
Um identificador para a sessão do Gerenciador de Reinicialização existente.
dwRestartFlags
Reservado. Esse parâmetro deve ser 0.
[in, optional] fnStatus
Um ponteiro para uma função de retorno de chamada de mensagem status que é usada para se comunicar status enquanto a função RmRestart 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 |
---|---|
|
Esse valor de erro será retornado se a função RmRestart for chamada com um identificador de sessão válido antes de chamar a função RmShutdown . |
|
Não foi possível reiniciar um ou mais aplicativos. As estruturas RM_PROCESS_INFO retornadas pela função RmGetList contêm informações de status atualizadas. |
|
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á. |
|
Esse valor de erro é retornado pela função RmRestart quando a solicitação para cancelar uma operação é bem-sucedida. |
|
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. |
|
Uma operação do Gerenciador de Reinicialização não pôde ser concluída porque não havia memória suficiente disponível. |
|
Não existe nenhuma sessão do Gerenciador de Reinicialização para o identificador fornecido. |
|
A função é bem-sucedida e retorna. |
Comentários
Depois de chamar a função RmRestart, as estruturas RM_PROCESS_INFO retornadas pela função RmGetList contêm informações de status atualizadas.
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.
Quando um aplicativo de console é desligado e reiniciado pelo Gerenciador de Reinicialização, o aplicativo é reiniciado em um novo console.
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.
A função RmRestart não reinicia nenhum aplicativo executado com privilégios elevados. Mesmo que o aplicativo tenha sido desligado pelo Gerenciador de Reinicialização.
A função RmRestart não reinicia nenhum aplicativo que não seja executado como o usuário conectado no momento. Mesmo que o aplicativo tenha sido desligado pelo Gerenciador de Reinicialização. Por exemplo, a função RmRestart não reinicia os aplicativos iniciados com o comando Executar como que não é executado como o usuário conectado no momento. Esses aplicativos devem ser reiniciados manualmente.
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 |