Skip to content

Commit 390efc3

Browse files
committed
Use new resource loading API
1 parent f4d15a5 commit 390efc3

File tree

1 file changed

+43
-5
lines changed

1 file changed

+43
-5
lines changed

example/DllLoader/DllLoader.cpp

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#define WIN32_LEAN_AND_MEAN
22

33
#include <windows.h>
4+
#include <tchar.h>
45
#include <stdio.h>
56
#include <malloc.h>
67

@@ -13,12 +14,31 @@ typedef int (*addNumberProc)(int, int);
1314
void LoadFromFile(void)
1415
{
1516
addNumberProc addNumber;
17+
HRSRC resourceInfo;
18+
DWORD resourceSize;
19+
LPVOID resourceData;
20+
_TCHAR buffer[100];
21+
1622
HINSTANCE handle = LoadLibrary(DLL_FILE);
1723
if (handle == NULL)
1824
return;
1925

2026
addNumber = (addNumberProc)GetProcAddress(handle, "addNumbers");
2127
printf("From file: %d\n", addNumber(1, 2));
28+
29+
resourceInfo = FindResource(handle, MAKEINTRESOURCE(VS_VERSION_INFO), RT_VERSION);
30+
printf("FindResource returned 0x%p\n", resourceInfo);
31+
32+
resourceSize = SizeofResource(handle, resourceInfo);
33+
resourceData = LoadResource(handle, resourceInfo);
34+
printf("Resource data: %ld bytes at 0x%p\n", resourceSize, resourceData);
35+
36+
LoadString(handle, 1, buffer, sizeof(buffer));
37+
printf("String1: %s\n", buffer);
38+
39+
LoadString(handle, 20, buffer, sizeof(buffer));
40+
printf("String2: %s\n", buffer);
41+
2242
FreeLibrary(handle);
2343
}
2444

@@ -27,8 +47,12 @@ void LoadFromMemory(void)
2747
FILE *fp;
2848
unsigned char *data=NULL;
2949
size_t size;
30-
HMEMORYMODULE module;
50+
HMEMORYMODULE handle;
3151
addNumberProc addNumber;
52+
HMEMORYRSRC resourceInfo;
53+
DWORD resourceSize;
54+
LPVOID resourceData;
55+
_TCHAR buffer[100];
3256

3357
fp = fopen(DLL_FILE, "rb");
3458
if (fp == NULL)
@@ -44,16 +68,30 @@ void LoadFromMemory(void)
4468
fread(data, 1, size, fp);
4569
fclose(fp);
4670

47-
module = MemoryLoadLibrary(data);
48-
if (module == NULL)
71+
handle = MemoryLoadLibrary(data);
72+
if (handle == NULL)
4973
{
5074
printf("Can't load library from memory.\n");
5175
goto exit;
5276
}
5377

54-
addNumber = (addNumberProc)MemoryGetProcAddress(module, "addNumbers");
78+
addNumber = (addNumberProc)MemoryGetProcAddress(handle, "addNumbers");
5579
printf("From memory: %d\n", addNumber(1, 2));
56-
MemoryFreeLibrary(module);
80+
81+
resourceInfo = MemoryFindResource(handle, MAKEINTRESOURCE(VS_VERSION_INFO), RT_VERSION);
82+
printf("MemoryFindResource returned 0x%p\n", resourceInfo);
83+
84+
resourceSize = MemorySizeofResource(handle, resourceInfo);
85+
resourceData = MemoryLoadResource(handle, resourceInfo);
86+
printf("Memory resource data: %ld bytes at 0x%p\n", resourceSize, resourceData);
87+
88+
MemoryLoadString(handle, 1, buffer, sizeof(buffer));
89+
printf("String1: %s\n", buffer);
90+
91+
MemoryLoadString(handle, 20, buffer, sizeof(buffer));
92+
printf("String2: %s\n", buffer);
93+
94+
MemoryFreeLibrary(handle);
5795

5896
exit:
5997
if (data)

0 commit comments

Comments
 (0)