![]() |
Fehlermeldung beim Runterfahren mit Systemdienst
Hallo Zusammen...
Die Problemer werden weniger aber es gibt immer noch welche... :stupid: "DLL-Initialisierung fehlgeschlagen..." "Die Anwendung konnte nicht initialisiert werden, da die Arbeitsstation gerade heruntergefahren wird." Diese Meldung erhalte ich beim runterfahren von W2k & XP - Vista bleibt ohne Meldung. Ich gehe davon aus, das mein Systemdienst nicht "richtig" auf das herunterfahren reagiert. Hat jemand ne Idee? Grüsse Mavarik :coder: |
Re: Fehlermeldung beim Runterfahren mit Systemdienst
Hallo,
das klingt so, als wolle da ein Porgramm, Dienst.. starten, während das System heruntergefahren wird. Bei Diensten fällt mir als Ursache da momentan nur folgendes ein: Der Dienst ist so konfiguriert, das er, sofern er (unbeabsichtigt?) beendet wird, automatisch neu gestartet wird. Ist in der Dienstekonfiguration auf dem Reiter "Wiederherstellen" eventuell irgendwas konfiguriert, was beim Dienstausfall zu geschehen hat? Oder ist der Dienst so geschrieben, dass er sich im Fehlerfalle eventuell neu startet? Gibt es eine Diensteüberwachung, die ausgefallenen Dienste neu startet und (dummerweise) auch beim Herunterfahren noch den Neustart bereits beendeter Dienste "anregt"? |
Re: Fehlermeldung beim Runterfahren mit Systemdienst
Zitat:
Zitat:
Delphi-Quellcode:
Service := CreateService(SCManager, ServiceName, DisplayName, SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS or SERVICE_INTERACTIVE_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_IGNORE, pchar(FileName), nil, nil, nil, nil, nil);
Zitat:
Gibt es nicht auch sowas für dies für Dienste?
Delphi-Quellcode:
oder erhalten die "nur" einen Stopevent...
procedure WMQUERYENDSESSION(var msg: TMessage); message WM_QUERYENDSESSION;
Kann es sein, dass ich einfach nicht schnell genug alle erzeugten Threads beende? Mavarik :coder: |
Re: Fehlermeldung beim Runterfahren mit Systemdienst
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Fehlermeldung beim Runterfahren mit Systemdienst
Hallo Mavarik.
Zitat:
Zitat:
Also wie ich das verstanden habe ist dein Dienst wie folgt aufgebaut: DispatchTable initialisieren -> @serviceproc -> ServiceName StartServiceCtrlDispatcher -> @serviceproc RegisterServiceCtrlhandler -> SetServiceStatus ServiceMain -> WorkerCode + WorkerThreads -> WairFor -> Event -> ServiceHandler Nach Signalling des Synchronisationsobjects(Event) wird in der ServiceMain aufgeräumt, danach die Prozedure verlassen und somit sollte der Service beendet sein, und das System kann herunterfahren.
Delphi-Quellcode:
procedure ServiceHandler(fdwcontrol: integer); stdcall;
begin case fdwcontrol of SERVICE_CONTROL_STOP: SERVICE_CONTROL_PAUSE: SERVICE_CONTROL_CONTINUE: SERVICE_CONTROL_INTERROGATE: SERVICE_CONTROL_SHUTDOWN: begin if hStoppedEvent > 0 then SetEvent(hStoppedEvent); end; end; end; Versuch mal folgendes, um herauszufinden wo es genau hakt. 1. Testweise, ohne SERVICE_INTERACTIVE_PROCESS -> Reboot 2. Ohne das Aufräumen der Threads, bzw. gleich ohne diese überhaupt zu starten. -> Reboot lg. Astat |
Re: Fehlermeldung beim Runterfahren mit Systemdienst
Zitat:
|
Re: Fehlermeldung beim Runterfahren mit Systemdienst
Die lange Schreibweise für "Dienst". ;)
|
Re: Fehlermeldung beim Runterfahren mit Systemdienst
Zitat:
Mavarik |
Re: Fehlermeldung beim Runterfahren mit Systemdienst
Hallo Mavarik.
Nö, wenn Service Control Handler Function korrekt implemenetiert, wird ein Shutdown ausgeführt. Siehe: http://msdn.microsoft.com/en-us/library/ms685149(VS.85).aspx lg. Astat |
Re: Fehlermeldung beim Runterfahren mit Systemdienst
Zitat:
Aber ich bin ja schon weiter... Also... Status.dwControlsAccepted := SERVICE_ACCEPT_STOP or SERVICE_ACCEPT_PAUSE_CONTINUE or SERVICE_ACCEPT_SHUTDOWN; das fehlte schon mal... Und obwohl ich
Delphi-Quellcode:
setze und (mein Dienst sich innerhalb von 430ms inkl. Logdateischreiben, sich beendet)
SERVICE_CONTROL_SHUTDOWN:
begin Stopped := True; StopEvent.SetEvent; Status.dwCurrentState := SERVICE_STOP_PENDING; Status.dwWaitHint := 3000; Status.dwWin32ExitCode := NO_ERROR; SetServiceStatus(StatusHandle, Status); end erhalte ich trotzdem die "Fehlermeldung" noch jemand ne Idee? Grüsse Mavarik :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz