Windows Dienst
-
Mann, du hast da schon ein GetlastError eingebaut, aber uns verraten was GetLastError liefert tust du nicht!
-
Sorry, ...
Dienst nicht gestartet: 1053
-
Bau mal GetLastError an mehreren Stellen ein. Am sinnvollsten nach Funktionsaufrufen.
-
GetLastError nützt mir ja nur was, wenn ein Fehler auftritt!
Aber alle anderen Aufrufe funktionieren ohne Probleme.
Ich überprüf sie ja alle auf ihren Rückgabewert.
-
Der Service muß innerhalb von 30 Sekunden seinen Status an den SCM melden (SetServiceStatus). Dieser Service macht das nicht, daher bekommst Du einen TimeOut als Fehler gemeldet.
-
Wollt das jetzt ausprobieren; doch ich hab Probleme mit den Parametern von RegisterServiceCtrlHandler; 2 Parameter soll ein Zeiger auf eine regestrierte Handler Funktion sein!? Weiß nicht wie ich das definier! Bzw. bei SetServiceStatus hab ich beim 2 Parameter das Problem, dass der auf die SERVICE_STATUS Struktur zeigen soll.
Vielleicht kann mir jemand ein bisschen Beispielcode zeigen??
-
Vielleicht solltest Du Dich erstmal ein wenig mit Services beschäftigen. Gorb gesagt funktioniert das jedenfalls so: Das Programm startet in der Funktion main bzw. WinMain. Dort übergibst Du dem SCM einen Zeiger auf Deine ServiceMain-Funktion (StartServiceCtrlDispatcher). In der ServiceMain-Funktion registrierst Du nun Deinen Control-Handler (RegisterServiceControlHandler/Ex). Dabei bekommst Du dann auch das benötigte Handle geliefert.
Die genaue Beschreibung und jede Menge Samples bekommst Du hier:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/services.asp?frame=true
-
Mal 'ne ganz andere Frage: Wo landet eigentlich die Ausgabe von cout, wenn ich keine Konsole aufmache?
-
Im Nirvana
-
Geh zu Codeguru. Dort gibt es einen Wizard zum erstellen von Services.
Warum willst du das Rad neu erfinden. Kannst dir ja den erstellten Source anschauen den der Wizard produziert.