Diferença entre o desligamento iniciado por software e o uso do botão de energia?

1

É possível desligar o Windows por software, por exemplo, clicando em algum lugar (botão Iniciar / Desligar) ou usando ferramentas como o shutdown.exe, etc.

Também é possível desligar o Windows pressionando o botão liga / desliga no computador.

Qual é a diferença? Referências, fatos concretos?

Notas / Esclarecimentos / Fundos:

  • Sempre me pareceu que pressionar o botão liga / desliga fará com que o Windows fechasse muito mais rápido, especialmente com o Windows XP: Computadores em nossa rede corporativa executando o XP muitas vezes demoravam um minuto para desligar o software, mas eles ficam inativos depois alguns segundos ao usar o botão liga / desliga.
  • Eu sei que é possível configurar o que o Windows deve fazer quando o botão liga / desliga é pressionado.
  • Estou falando de pressionar o botão liga / desliga por um curto período de tempo , sem segurá-lo por alguns segundos.
  • Uma especificação da ACPI , página 28: "O que o sistema faz com essa solicitação depende de questões políticas derivadas de preferências do usuário, solicitações de função do usuário e dados do aplicativo. " Mas o que faz o Windows faz?
  • Encontrei muitas conjeturas e suposições enquanto pesquisava na internet, mas não encontrei nenhum fato difícil. Por favor, não forneça mais palpites, obrigado.
por Martin 23.05.2013 / 09:43

2 respostas

5

É o mesmo.

Como você disse, você pode forçar um desligamento pressionando o botão liga / desliga por mais tempo (aproximadamente 4 segundos), mas isso está literalmente reduzindo o consumo de energia. Um desligamento iniciado por ACPI é o mesmo que você chama através do software. Ambas as formas, todos os aplicativos em execução na máquina precisam ser informados sobre o encerramento pendente (possivelmente abortá-lo, dependendo da versão do Windows), e fechar a si próprios e quaisquer arquivos que tenham aberto normalmente. Isso tudo leva tempo.

Basicamente, o que faz a mágica acontecer nos dois casos é uma chamada para o ExitWindowsEx function, que faz parte da API do Windows usada pelos programadores. * Se você especificar o EWX_POWEROFF flag, o sistema será encerrado e a energia será desativada. Também é possível chamar essa função com a flag EWX_FORCE , que fará exatamente o que parece - forçar um desligamento sem permitir que os aplicativos em execução demorem ou cancelem. Se você fizer isso, o desligamento provavelmente acontecerá mais rápido, mas não será um desligamento completamente "limpo" e, portanto, é perigoso.

A diferença de comportamento que você está vendo provavelmente se deve ao modo como o desligamento do software é iniciado. Por exemplo, quando você executa shutdown.exe , pode indicar um valor de tempo limite para quando a solicitação de desligamento deve ser iniciada. Durante esse período, o encerramento pendente pode ser cancelado executando shutdown.exe novamente com o sinalizador /a (para cancelar um encerramento pendente). 60 segundos é um valor bastante comum para este período de tempo limite.

O resto da diferença é provavelmente apenas perceptivo.

* O fato de o Windows ser um sistema operacional multiusuário pode tornar as coisas um pouco mais complicadas. Mas isso está ficando além do ponto aqui. Qualquer outro método de iniciar um encerramento (por exemplo, InitiateSystemShutdown ) vai se comportar de maneira semelhante.

    
por 23.05.2013 / 12:18
2

Quando você pressiona o botão de energia, o sistema recebe um sinal ACPI indicando que o botão liga / desliga foi pressionado. O que o sistema faz em resposta a este sinal é determinado pelas configurações do sistema. No Windows, o sistema pode ser configurado para desligar, entrar no modo de suspensão ou hibernar quando o botão liga / desliga é pressionado.

Em qualquer caso, o sistema operacional responde ao botão de energia que está sendo pressionado e reage essencialmente da mesma maneira como se você instruísse o sistema a desligar, dormir ou hibernar pelos menus ou programaticamente.

    
por 23.05.2013 / 09:52