9 GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
17 if (hInstance ==
nullptr) {
18 hInstance = GetModuleHandleA(NULL);
20 HRSRC res = FindResourceA(hInstance, MAKEINTRESOURCEA(res_id), res_type);
25 HGLOBAL res_handle = LoadResource(hInstance, res);
26 if (res_handle ==
nullptr) {
30 BYTE* res_data = (BYTE*) LockResource(res_handle);
31 size_t r_size =
static_cast<size_t>(SizeofResource(hInstance, res));
32 if (out_size != 0 && out_size <= r_size) {
37 if (out_buf !=
nullptr) {
38 memcpy(out_buf, res_data, r_size);
43 FreeResource(res_handle);
Compile-time configurable logging macros for peconv.
#define LOG_ERROR(fmt,...)
bool free_aligned(ALIGNED_BUF buffer, size_t buffer_size=0)
HMODULE get_current_module_handle()
ALIGNED_BUF alloc_aligned(size_t buffer_size, DWORD protect, void *desired_base=nullptr)
void free_resource_data(peconv::ALIGNED_BUF buffer)
peconv::ALIGNED_BUF load_resource_data(OUT size_t &out_size, const int res_id, const LPSTR res_type=RT_RCDATA_A, HMODULE hInstance=nullptr)
Functions related to manual retrieving of PE resources.