現時点ではmicrosoft/wilにもラッパークラスが用意されていなかったので、作ってみました。
定義
struct virtualallocex_deleter {
HANDLE const hProcess;
template<typename T>
void operator()(T* ptr) const
{
::VirtualFreeEx(hProcess, ptr, 0, MEM_RELEASE);
}
};
template<typename T = void>
using unique_virtualallocex_ptr = std::unique_ptr<T, virtualallocex_deleter>;
使用方法
unique_virtualallocex_ptr<> pRemote{
::VirtualAllocEx(hProcess.get(), nullptr, sizeof(localData), MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE),
virtualallocex_deleter{hProcess.get()}
};