diff --git a/sys/winnt/winnt.c b/sys/winnt/winnt.c index 155c2d059..3b711a0e8 100644 --- a/sys/winnt/winnt.c +++ b/sys/winnt/winnt.c @@ -243,7 +243,20 @@ int pid; HANDLE hProcessSnap = NULL; PROCESSENTRY32 pe32 = {0}; boolean bRet = FALSE; + HINSTANCE hinstLib; + genericptr_t ProcTest; + BOOL fFreeResult; + hinstLib = LoadLibrary("KERNEL32"); + if (hinstLib != NULL) { + ProcTest = (genericptr_t) GetProcAddress(hinstLib, "Process32Next"); + if (!ProcTest) { + fFreeResult = FreeLibrary(hinstLib); + return FALSE; + } + fFreeResult = FreeLibrary(hinstLib); + } + hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hProcessSnap == INVALID_HANDLE_VALUE) return FALSE; diff --git a/util/recover.c b/util/recover.c index fc6c173dc..f3b27a458 100644 --- a/util/recover.c +++ b/util/recover.c @@ -408,6 +408,20 @@ int pid; HANDLE hProcessSnap = NULL; PROCESSENTRY32 pe32 = {0}; boolean bRet = FALSE; + HINSTANCE hinstLib; + genericptr_t ProcTest; + BOOL fFreeResult; + + hinstLib = LoadLibrary("KERNEL32"); + if (hinstLib != NULL) { + ProcTest = (genericptr_t) GetProcAddress(hinstLib, "Process32Next"); + if (!ProcTest) { + fFreeResult = FreeLibrary(hinstLib); + return FALSE; + } + fFreeResult = FreeLibrary(hinstLib); + } + hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hProcessSnap == INVALID_HANDLE_VALUE)