É 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.