Witam wszystkich,
Chciałem się dowiedzieć czy można się zabezpieczyć przed
zawieszeniem/zatrzymaniem wątku czy biblioteki dll.
Wiem o procedurze inicjująco-kończącej, lecz ona nie wystarcza,
wszak przy zatrzymaniu biblioteki np. programem Process Explorer
nie wykonuje się żadna akcja(ani DLL_PROCESS_DETACH ani DLL_THREAD_DETACH).
Jak ktoś ma pomysł jak można wykryć taką akcję to proszę o porady.
Pozdrawiam.
zawieszeniem/zatrzymaniem wątku czy biblioteki dll.
jak można zatrzymać/zawiesić dllkę? Można ją wyładować, ale zawiesić?!
wszak przy zatrzymaniu biblioteki np. programem Process Explorer
nie wykonuje się żadna akcja(ani DLL_PROCESS_DETACH ani DLL_THREAD_DETACH).
To znaczy że nie zwalnia ona zasobów które przydzieliłeś, o ile nie wybierałeś opcji siłowego zamknięcia to jest to błąd.
Jak ktoś ma pomysł jak można wykryć taką akcję to proszę o porady.
Zrób watcher (jakiś wątek poza przestrzenią adresową twojej dllki i nie korzystającą z jej API) i niech ten watcher sprawdza np. czy jest zaalokowana strona pamięci gdzie jest twoja biblioteka ew. komunikująca się z nią. Jeżeli coś zatrzyma twoją bibliotekę albo wątek, ale nie watcher, to będziesz w stanie coś z tym zrobić...
Pierwsze słyszę o takiej rzeczy :<
Mógłbym poprosić o jakieś wskazówki jak się za to zabrać,
albo link do tutoriala czy kawałek kodu?
Pozdrawiam.