boolean () { Kernel32.HANDLE process = Kernel32.INSTANCE.OpenProcess(WinNT.PROCESS_TERMINATE | WinNT.SYNCHRONIZE, false, pid); if (process == null || process.getPointer() == null) { LOG.warning("Unable to find process " + name + '[' + pid + ']'); return false; } else { Kernel32.INSTANCE.TerminateProcess(process, 1); int wait = Kernel32.INSTANCE.WaitForSingleObject(process, 1000); if (wait != WinBase.WAIT_OBJECT_0) { LOG.warning("Timed out while waiting for process " + name + '[' + pid + "] to end"); return false; } Kernel32.INSTANCE.CloseHandle(process); return true; } }