diff --git a/src/driver/process.cpp b/src/driver/process.cpp index f4a1559..b718726 100644 --- a/src/driver/process.cpp +++ b/src/driver/process.cpp @@ -35,6 +35,28 @@ namespace process return *this; } + process_handle::process_handle(const process_handle& obj) + { + this->operator=(std::move(obj)); + } + + process_handle& process_handle::operator=(const process_handle& obj) + { + if (this != &obj) + { + this->release(); + this->own_ = obj.own_; + this->handle_ = obj.handle_; + + if(this->own_ && this->handle_) + { + ObReferenceObject(this->handle_); + } + } + + return *this; + } + process_handle::operator bool() const { return this->handle_ != nullptr; diff --git a/src/driver/process.hpp b/src/driver/process.hpp index 296c47f..adfc5d8 100644 --- a/src/driver/process.hpp +++ b/src/driver/process.hpp @@ -12,8 +12,8 @@ namespace process process_handle(process_handle&& obj) noexcept; process_handle& operator=(process_handle&& obj) noexcept; - process_handle(const process_handle&) = delete; - process_handle& operator=(const process_handle&) = delete; + process_handle(const process_handle& obj); + process_handle& operator=(const process_handle& obj); operator bool() const; operator PEPROCESS() const;