From 246eb9266b9349b44cbe96f3f839124ab30cbb89 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Sat, 15 Nov 2025 16:43:25 +0800 Subject: Impl win subprocess. --- include/cru/base/platform/win/Win32SubProcess.h | 41 +++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 include/cru/base/platform/win/Win32SubProcess.h (limited to 'include/cru/base/platform/win/Win32SubProcess.h') diff --git a/include/cru/base/platform/win/Win32SubProcess.h b/include/cru/base/platform/win/Win32SubProcess.h new file mode 100644 index 00000000..e7189b02 --- /dev/null +++ b/include/cru/base/platform/win/Win32SubProcess.h @@ -0,0 +1,41 @@ +#pragma once + +#ifndef _WIN32 +#error "This file can only be included on Windows." +#endif + +#include "../../SubProcess.h" +#include "../../io/AutoReadStream.h" +#include "Base.h" +#include "Stream.h" + +namespace cru::platform::win { +class CRU_BASE_API Win32SubProcessImpl + : public Object, + public virtual IPlatformSubProcessImpl { + CRU_DEFINE_CLASS_LOG_TAG("cru::platform::win::Win32SubProcessImpl") + + public: + explicit Win32SubProcessImpl(); + ~Win32SubProcessImpl(); + + void PlatformCreateProcess(const SubProcessStartInfo& start_info) override; + SubProcessExitResult PlatformWaitForProcess() override; + void PlatformKillProcess() override; + + io::Stream* GetStdinStream() override; + io::Stream* GetStdoutStream() override; + io::Stream* GetStderrStream() override; + + private: + PROCESS_INFORMATION process_; + int exit_code_; + + std::unique_ptr stdin_stream_; + std::unique_ptr stdout_stream_; + std::unique_ptr stderr_stream_; + + std::unique_ptr stdout_buffer_stream_; + std::unique_ptr stderr_buffer_stream_; +}; +} // namespace cru::platform::win -- cgit v1.2.3