Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#8

AW: Wieso kann Windows hängende Prozesse beenden und ich nicht?

  Alt 23. Jun 2011, 23:55
Zwischen der API-Funktion TerminateProcess und dem Code, der beim Herunterfahren/Neustart von Windows ausgeführt wird gibt es sicher einen Unterschied.

Folgende Überlegungen sind rein spekulativ aber die Logik sagt mir, dass es so ablaufen muss
Wenn Windows heruntergefahren wird, dann bekommen die Anwendungen eine freundliche WM_CLOSE Message.
Sollte eine Anwendung darauf nicht innerhalb einer best. Zeit reagieren, dann kommt wohl das härtere TerminateProcess zum Zuge.
Sollte TerminateProcess nichts bewirken dann hat Windows sicher noch einen "Emergency" Mechanismus
in der Hinterhand.
Wenn Windows sowieso runtergefahren wird, dann ist es doch egal ob die reservierten Resourcen (Speicher, File-Handles,...) einer Anwendung wirklich freigegeben werden.
Windows braucht dann nur alle Threads anhalten und alle Handles gewaltsam schliesen und so tun als ob der Prozess gekillt wäre.
Hätte Windows diesen Notmechanismus nicht, gäbe es öfters mal Blockaden beim Herunterfahren
wie man das z.B. noch von Windows 95/98/ME kennt.

Und dann gibt es auch noch die undokumentierte API-Funktion NtTerminateProcess bzw. ZwTerminateProcess, die möglicherweise härter als TerminateProcess agieren.
  Mit Zitat antworten Zitat