1
0
Fork 0
x64dbg/src/dbg/handle.h

43 lines
798 B
C++

#ifndef _HANDLE_H
#define _HANDLE_H
#include <windows.h>
class Handle
{
public:
Handle(HANDLE h = nullptr) : mHandle(h) { }
Handle(const Handle &) = delete;
Handle(Handle &&) = delete;
~Handle()
{
Close();
}
void Close()
{
if(*this)
{
DWORD dwFlags = 0;
if(GetHandleInformation(mHandle, &dwFlags) && !(dwFlags & HANDLE_FLAG_PROTECT_FROM_CLOSE))
CloseHandle(mHandle);
mHandle = INVALID_HANDLE_VALUE;
}
}
operator HANDLE()
{
return mHandle;
}
explicit operator bool() const
{
return mHandle != nullptr && mHandle != INVALID_HANDLE_VALUE;
}
private:
HANDLE mHandle;
};
#endif //_HANDLE_H