From 135337380ae04358c06d50d6c7f9b424deab19b4 Mon Sep 17 00:00:00 2001 From: Joachim Bauch Date: Sun, 10 Oct 2004 16:31:50 +0000 Subject: [PATCH] added sample project --- example/DllLoader/DllLoader.cpp | 70 +++++++++++++++ example/DllLoader/DllLoader.vcproj | 138 +++++++++++++++++++++++++++++ example/DllMemory.ncb | Bin 0 -> 68608 bytes example/DllMemory.sln | 30 +++++++ example/DllMemory.suo | Bin 0 -> 11264 bytes example/SampleDLL/SampleDLL.cpp | 10 +++ example/SampleDLL/SampleDLL.h | 11 +++ example/SampleDLL/SampleDLL.vcproj | 137 ++++++++++++++++++++++++++++ 8 files changed, 396 insertions(+) create mode 100644 example/DllLoader/DllLoader.cpp create mode 100644 example/DllLoader/DllLoader.vcproj create mode 100644 example/DllMemory.ncb create mode 100644 example/DllMemory.sln create mode 100644 example/DllMemory.suo create mode 100644 example/SampleDLL/SampleDLL.cpp create mode 100644 example/SampleDLL/SampleDLL.h create mode 100644 example/SampleDLL/SampleDLL.vcproj diff --git a/example/DllLoader/DllLoader.cpp b/example/DllLoader/DllLoader.cpp new file mode 100644 index 0000000..e3e8c44 --- /dev/null +++ b/example/DllLoader/DllLoader.cpp @@ -0,0 +1,70 @@ +#define WIN32_LEAN_AND_MEAN + +#include +#include +#include + +#include "../../MemoryModule.h" + +typedef int (*addNumberProc)(int, int); + +#define DLL_FILE "..\\..\\SampleDLL\\Debug\\SampleDLL.dll" + +void LoadFromFile(void) +{ + addNumberProc addNumber; + HINSTANCE handle = LoadLibrary(DLL_FILE); + if (handle == INVALID_HANDLE_VALUE) + return; + + addNumber = (addNumberProc)GetProcAddress(handle, "addNumbers"); + printf("From file: %d\n", addNumber(1, 2)); + FreeLibrary(handle); +} + +void LoadFromMemory(void) +{ + FILE *fp; + unsigned char *data=NULL; + size_t size; + HMEMORYMODULE module; + addNumberProc addNumber; + + fp = fopen(DLL_FILE, "rb"); + if (fp == NULL) + { + printf("Can't open DLL file \"%s\".", DLL_FILE); + goto exit; + } + + fseek(fp, 0, SEEK_END); + size = ftell(fp); + data = (unsigned char *)malloc(size); + fseek(fp, 0, SEEK_SET); + fread(data, 1, size, fp); + fclose(fp); + + module = MemoryLoadLibrary(data, size); + if (module == NULL) + { + printf("Can't load library from memory.\n"); + goto exit; + } + + addNumber = (addNumberProc)MemoryGetProcAddress(module, "addNumbers"); + printf("From memory: %d\n", addNumber(1, 2)); + MemoryFreeLibrary(module); + +exit: + if (data) + free(data); +} + +int main(int argc, char* argv[]) +{ + LoadFromFile(); + printf("\n\n"); + LoadFromMemory(); + return 0; +} + diff --git a/example/DllLoader/DllLoader.vcproj b/example/DllLoader/DllLoader.vcproj new file mode 100644 index 0000000..e6e24dd --- /dev/null +++ b/example/DllLoader/DllLoader.vcproj @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/example/DllMemory.ncb b/example/DllMemory.ncb new file mode 100644 index 0000000000000000000000000000000000000000..260e32a00dcf0360ea0c02adbc01fa782b8b0d3b GIT binary patch literal 68608 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 a%Fu-rc+XLw{XJLWu)rY&LJG_m1^z!+HX1Pi literal 0 HcmV?d00001 diff --git a/example/DllMemory.sln b/example/DllMemory.sln new file mode 100644 index 0000000..ef94099 --- /dev/null +++ b/example/DllMemory.sln @@ -0,0 +1,30 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SampleDLL", "SampleDLL\SampleDLL.vcproj", "{B293DAC4-5BCA-4413-9B7B-92CB56459875}" + ProjectSection(ProjectDependencies) = postProject + {D0226BB5-3A02-4C91-893A-F36567AED5C5} = {D0226BB5-3A02-4C91-893A-F36567AED5C5} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DllLoader", "DllLoader\DllLoader.vcproj", "{D0226BB5-3A02-4C91-893A-F36567AED5C5}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {B293DAC4-5BCA-4413-9B7B-92CB56459875}.Debug.ActiveCfg = Debug|Win32 + {B293DAC4-5BCA-4413-9B7B-92CB56459875}.Debug.Build.0 = Debug|Win32 + {B293DAC4-5BCA-4413-9B7B-92CB56459875}.Release.ActiveCfg = Release|Win32 + {B293DAC4-5BCA-4413-9B7B-92CB56459875}.Release.Build.0 = Release|Win32 + {D0226BB5-3A02-4C91-893A-F36567AED5C5}.Debug.ActiveCfg = Debug|Win32 + {D0226BB5-3A02-4C91-893A-F36567AED5C5}.Debug.Build.0 = Debug|Win32 + {D0226BB5-3A02-4C91-893A-F36567AED5C5}.Release.ActiveCfg = Release|Win32 + {D0226BB5-3A02-4C91-893A-F36567AED5C5}.Release.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/example/DllMemory.suo b/example/DllMemory.suo new file mode 100644 index 0000000000000000000000000000000000000000..3548eeda4cda8e93c1d2ebd43dca9ba6f1de5621 GIT binary patch literal 11264 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 R`Bx`KL0Ro#^ex__{{cxUn`i(4 literal 0 HcmV?d00001 diff --git a/example/SampleDLL/SampleDLL.cpp b/example/SampleDLL/SampleDLL.cpp new file mode 100644 index 0000000..662efcd --- /dev/null +++ b/example/SampleDLL/SampleDLL.cpp @@ -0,0 +1,10 @@ +#include "SampleDLL.h" + +extern "C" { + +SAMPLEDLL_API int addNumbers(int a, int b) +{ + return a + b; +} + +} \ No newline at end of file diff --git a/example/SampleDLL/SampleDLL.h b/example/SampleDLL/SampleDLL.h new file mode 100644 index 0000000..b77f135 --- /dev/null +++ b/example/SampleDLL/SampleDLL.h @@ -0,0 +1,11 @@ +extern "C" { + +#ifdef SAMPLEDLL_EXPORTS +#define SAMPLEDLL_API __declspec(dllexport) +#else +#define SAMPLEDLL_API __declspec(dllimport) +#endif + +SAMPLEDLL_API int addNumbers(int a, int b); + +} \ No newline at end of file diff --git a/example/SampleDLL/SampleDLL.vcproj b/example/SampleDLL/SampleDLL.vcproj new file mode 100644 index 0000000..9a0b722 --- /dev/null +++ b/example/SampleDLL/SampleDLL.vcproj @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +