diff --git a/src/MaaCore/Controller/AdbController.cpp b/src/MaaCore/Controller/AdbController.cpp index 180854c07c..a49eb521e7 100644 --- a/src/MaaCore/Controller/AdbController.cpp +++ b/src/MaaCore/Controller/AdbController.cpp @@ -137,6 +137,7 @@ std::optional asst::AdbController::call_command( m_platform_io->call_command(cmd, recv_by_socket, pipe_data, sock_data, timeout, start_time); if (!exit_res) { + Log.warn("Call `", cmd, "` failed"); return std::nullopt; } const int exit_ret = exit_res.value(); diff --git a/src/MaaCore/Controller/Platform/Win32IO.cpp b/src/MaaCore/Controller/Platform/Win32IO.cpp index bb11b40035..0a0638db33 100644 --- a/src/MaaCore/Controller/Platform/Win32IO.cpp +++ b/src/MaaCore/Controller/Platform/Win32IO.cpp @@ -152,11 +152,23 @@ std::optional asst::Win32IO::call_command(const std::string& cmd, bool recv handle_string.emplace_back("UnknownHandle"); } } - Log.warn("Wait handles:", handle_string, "timeout."); + Log.warn("Wait handles:", handle_string, " after", timeout, "ms."); if (process_running) { TerminateProcess(process_info.hProcess, 0); } - break; + // 处理超时后返回 std::nullopt + CloseHandle(pipe_parent_read); + CloseHandle(pipeov.hEvent); + CloseHandle(process_info.hProcess); + CloseHandle(process_info.hThread); + if (recv_by_socket) { + CloseHandle(sockov.hEvent); + if (client_socket != INVALID_SOCKET) { + closesocket(client_socket); + } + } + return std::nullopt; + // break; } continue; }