| 122 | } |
| 123 | |
| 124 | DWORD WINAPI TaskViewVisibilityMonitor::ThreadProc(LPVOID) noexcept |
| 125 | { |
| 126 | ThreadMain(); |
| 127 | |
| 128 | // suspend this thread forever. |
| 129 | // if we just return, the code in Uninstall might terminate the thread while the CRT is |
| 130 | // cleaning up thread-local structures in a lock, resulting in an abandonned lock. |
| 131 | // so once the CRT is unloaded, it deadlocks the GUI thread. |
| 132 | Sleep(INFINITE); |
| 133 | |
| 134 | // if the thread somehow gets resumed, something is very wrong. |
| 135 | __fastfail(FAST_FAIL_FATAL_APP_EXIT); |
| 136 | |
| 137 | return static_cast<DWORD>(-1); // make the compiler happy |
| 138 | } |
| 139 | |
| 140 | LRESULT CALLBACK TaskViewVisibilityMonitor::WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) noexcept |
| 141 | { |
nothing calls this directly
no outgoing calls
no test coverage detected