Zhen
Lt. Junior Grade
- Registriert
- Aug. 2009
- Beiträge
- 299
Hallo Leute,
ich bin gerade wieder ein bisschen am experimentieren und habe da einen Fehlercode den ich nicht gerade nachvollziehen kann...
Ich habe nen einfachen Windows Dienst der beim Starten halt versucht das Handle auf den Desktop zu bekommen.
In meiner Console-Application funktioniert das auch einwandfrei, aber im Service spuckt er mir halt den Fehlercode
997
aus, was für
Overlapped I/O operation is in progress
steht. Hat da jemand eine Idee woran das liegen könnte?
Hier noch der Code
Diese funktion wird in einem eigenen Thread ausgeführt. Der Thread wird in der OnStart-Methode vom Windows Dienst gestartet
Hoffe ihr könnt mir da weiterhelfen. Dieser Fehlercode 997 kommt übrigens bei jeder dieser WinAPI-Funktion.
Ich versteh aber wirklich nicht wieso.
ich bin gerade wieder ein bisschen am experimentieren und habe da einen Fehlercode den ich nicht gerade nachvollziehen kann...
Ich habe nen einfachen Windows Dienst der beim Starten halt versucht das Handle auf den Desktop zu bekommen.
In meiner Console-Application funktioniert das auch einwandfrei, aber im Service spuckt er mir halt den Fehlercode
997
aus, was für
Overlapped I/O operation is in progress
steht. Hat da jemand eine Idee woran das liegen könnte?
Hier noch der Code
PHP:
private void InitializeDesktop() {
uint cur_ThreadId = 0;
IntPtr new_Desktop = IntPtr.Zero;
IntPtr old_Desktop = IntPtr.Zero;
// GetDesktopWindow
try {
EventLog.WriteEntry("Beginne mit der Ausführung von GetDesktopWindow...");
new_Desktop = NativeMethods.GetDesktopWindow();
EventLog.WriteEntry("Ausführung von GetDesktopWindow beendet... !");
EventLog.WriteEntry("Fehlercode: " + NativeMethods.GetLastError() + "\r\n");
} catch (Exception ex) {
EventLog.WriteEntry("Bei der Ausführung von GetDesktopWindow trat ein Fehler auf! \r\n" + ex.Message);
EventLog.WriteEntry("Fehlercode: " + NativeMethods.GetLastError() + "\r\n");
}
// GetCurrentThreadId
try {
EventLog.WriteEntry("Beginne mit der Ausführung von GetCurrentThreadId...");
cur_ThreadId = NativeMethods.GetCurrentThreadId();
EventLog.WriteEntry("Ausführung von GetCurrentThreadId abgeschlossen... !");
EventLog.WriteEntry("Fehlercode: " + NativeMethods.GetLastError() + "\r\n");
} catch (Exception ex) {
EventLog.WriteEntry("Bei der Ausführung von GetCurrentThread trat ein Fehler auf! \r\n" + ex.Message);
EventLog.WriteEntry("Fehlercode: " + NativeMethods.GetLastError() + "\r\n");
}
// GetThreadDesktop
try {
EventLog.WriteEntry("Beginne mit der Ausführung von GetThreadDesktop...");
old_Desktop = NativeMethods.GetThreadDesktop(cur_ThreadId);
EventLog.WriteEntry("Ausführung von GetThreadDesktop beendet!");
EventLog.WriteEntry("Fehlercode: " + NativeMethods.GetLastError() + "\r\n");
} catch (Exception ex) {
EventLog.WriteEntry("Bei der Ausführung von GetThreadDesktop trat ein Fehler auf! \r\n" + ex.Message);
EventLog.WriteEntry("Fehlercode: " + NativeMethods.GetLastError() + "\r\n");
}
// SetThreadDesktop
if (!NativeMethods.SetThreadDesktop(new_Desktop)) {
EventLog.WriteEntry("\r\nACTION FAILED");
EventLog.WriteEntry(NativeMethods.GetLastError().ToString());
} else {
EventLog.WriteEntry("\r\nDesktop wurde dem neuen Thread erfolgreich zugewiesen!");
}
// CloseDesktop
if (!NativeMethods.CloseDesktop(old_Desktop)) {
EventLog.WriteEntry("\r\nUNABLE TO CLOSE DESKTOP");
EventLog.WriteEntry(NativeMethods.GetLastError().ToString());
}
}
Diese funktion wird in einem eigenen Thread ausgeführt. Der Thread wird in der OnStart-Methode vom Windows Dienst gestartet
Hoffe ihr könnt mir da weiterhelfen. Dieser Fehlercode 997 kommt übrigens bei jeder dieser WinAPI-Funktion.
Ich versteh aber wirklich nicht wieso.