005
18.05.2005, 16:44 Uhr
~Thread-Frage
Gast
|
Ich hab mir jetzt mit GetLastError() und FormatMessage mal den Fehlercode geholt und geschaut ob ich ein gültiges Handle kriege. Das istd er Fall: GetLastError() liefert den Fehlercode 0 und das Handle ist auch gültig aber der Thread wird nicht abgearbeitet. Ich habe mich inzwischen soweit in das Thema eingelesen, das ich weiss, dass Threads nicht in DLLMain gestartet werden sollten. Threads die in DLLMain erzeugt werden, erzeugt das System zwar, hält sie aber gleichzeitig so lange an bis die Initialisierung der DLL abgeschlossen ist. Aber wie schliesse ich diese Initialisierung ab damit mein Thread anläuft? Habe jetzt schonmal folgendes probiert:
C++: |
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch(ul_reason_for_call) { case DLL_PROCESS_ATTACH: { EntryPoint(); break; }
|
und dann gehts weiter mit der Funktion EntryPoint:
C++: |
void EntryPoint() { DWORD dwFlags; hThreadHandle = CreateThread( NULL, NULL, (LPTHREAD_START_ROUTINE) &Log, NULL, dwFlags, NULL ); Steuerung(); return 1; }
|
Damit vermeide ich es, den Thread direkt in DLLMain zu starten, das Ergebnis ist aber das selbe. Der Thread startet nicht , wird aber offenbar korrekt erzeugt(gültiges Handle, ErrorCode 0) aber wie es scheint weiter angehalten. Weiss jemand wie ich meine Threads zu laufen bringen kann? |