From bfdf5415b5e025d795a1a7ee89946b00708f50b2 Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Sun, 16 May 2021 02:00:12 +0300 Subject: Process: import pdb::Process from winapi-debug --- include/winapi/process.hpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/winapi/process.hpp b/include/winapi/process.hpp index 2e1420f..b79d7c2 100644 --- a/include/winapi/process.hpp +++ b/include/winapi/process.hpp @@ -69,6 +69,8 @@ inline void swap(ShellParameters& a, ShellParameters& b) BOOST_NOEXCEPT_OR_NOTHR class Process { public: + using ID = DWORD; + static Process create(ProcessParameters); static Process create(const CommandLine&); static Process create(const CommandLine&, process::IO); @@ -76,28 +78,40 @@ public: static Process shell(const ShellParameters&); static Process shell(const CommandLine&); + static Process current(); + static Process open(ID, DWORD permissions = default_permissions()); + static Process open_r(ID); + + static DWORD default_permissions(); + static DWORD read_permissions(); + // VS 2013 won't generate these automatically. Process(Process&&) BOOST_NOEXCEPT_OR_NOTHROW; Process& operator=(Process) BOOST_NOEXCEPT_OR_NOTHROW; void swap(Process& other) BOOST_NOEXCEPT_OR_NOTHROW; Process(const Process&) = delete; + ID get_id() const { return m_id; } + const Handle& get_handle() const { return m_handle; } + bool is_running() const; void wait() const; void terminate(int ec = 0) const; void shut_down(int ec = 0) const; int get_exit_code() const; - static std::string get_exe_path(); + std::string get_exe_path() const; static Resource get_resource(uint32_t id); static std::string get_resource_string(uint32_t id); private: - explicit Process(Handle&& handle) : m_handle(std::move(handle)) {} + explicit Process(Handle&& handle); + Process(ID, Handle&& handle); static HMODULE get_exe_module(); + ID m_id; Handle m_handle; }; -- cgit v1.2.3