内存加载dll

时间:2016-04-14 18:32:17
【文件属性】:

文件名称:内存加载dll

文件大小:28KB

文件格式:ZIP

更新时间:2016-04-14 18:32:17

内存dll 内存动态库

内存加载动态库 MemoryLoadLibrary 有例子。 /* * Memory DLL loading code * Version 0.0.3 * * Copyright (c) 2004-2013 by Joachim Bauch / mail@joachim-bauch.de * http://www.joachim-bauch.de * * The contents of this file are subject to the Mozilla Public License Version * 2.0 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is MemoryModule.h * * The Initial Developer of the Original Code is Joachim Bauch. * * Portions created by Joachim Bauch are Copyright (C) 2004-2013 * Joachim Bauch. All Rights Reserved. * */ #ifndef __MEMORY_MODULE_HEADER #define __MEMORY_MODULE_HEADER #include typedef void *HMEMORYMODULE; typedef void *HMEMORYRSRC; typedef void *HCUSTOMMODULE; #ifdef __cplusplus extern "C" { #endif typedef HCUSTOMMODULE (*CustomLoadLibraryFunc)(LPCSTR, void *); typedef FARPROC (*CustomGetProcAddressFunc)(HCUSTOMMODULE, LPCSTR, void *); typedef void (*CustomFreeLibraryFunc)(HCUSTOMMODULE, void *); /** * Load DLL from memory location. * * All dependencies are resolved using default LoadLibrary/GetProcAddress * calls through the Windows API. */ HMEMORYMODULE MemoryLoadLibrary(const void *); /** * Load DLL from memory location using custom dependency resolvers. * * Dependencies will be resolved using passed callback methods. */ HMEMORYMODULE MemoryLoadLibraryEx(const void *, CustomLoadLibraryFunc, CustomGetProcAddressFunc, CustomFreeLibraryFunc, void *); /** * Get address of exported method. */ FARPROC MemoryGetProcAddress(HMEMORYMODULE, LPCSTR); /** * Free previously loaded DLL. */ void MemoryFreeLibrary(HMEMORYMODULE); /** * Find the location of a resource with the specified type and name. */ HMEMORYRSRC MemoryFindResource(HMEMORYMODULE, LPCTSTR, LPCTSTR); /** * Find the location of a resource with the specified type, name and language. */ HMEMORYRSRC MemoryFindResourceEx(HMEMORYMODULE, LPCTSTR, LPCTSTR, WORD); /** * Get the size of the resource in bytes. */ DWORD MemorySizeofResource(HMEMORYMODULE, HMEMORYRSRC); /** * Get a pointer to the contents of the resource. */ LPVOID MemoryLoadResource(HMEMORYMODULE, HMEMORYRSRC); /** * Load a string resource. */ int MemoryLoadString(HMEMORYMODULE, UINT, LPTSTR, int); /** * Load a string resource with a given language. */ int MemoryLoadStringEx(HMEMORYMODULE, UINT, LPTSTR, int, WORD); #ifdef __cplusplus } #endif #endif // __MEMORY_MODULE_HEADER


【文件预览】:
MemoryModule-master
----.gitignore(16B)
----Makefile(244B)
----MemoryModule.c(24KB)
----doc()
--------readme.txt(18KB)
----LICENSE.txt(16KB)
----example()
--------Makefile(256B)
--------DllLoader()
--------DllMemory.sln(1KB)
--------SampleDLL()
----MemoryModule.h(3KB)
----readme.txt(755B)

网友评论

  • 很好的内存调用DLL的例子
  • 非常有技术含量的源代码!内存加载DLL!谢谢了。CSDN真是个好地方!
  • 好东西,C语言果然是万能的。
  • 非常实用,可以从内存读dll了
  • 测试不能 dll里线程好像有点问题
  • 用不了,有bug,而且我需要的是以资源的形式加载,并非fopen然后再加载
  • 这个不错,可以调用dll中的函数
  • 不知道爲什麽用不了
  • 這份代碼加載dll運行失敗了 . 不過好歹弄懂邏輯是怎麼回事了 ,頂一個
  • 和我的要求正好符合,对我帮助太大了
  • 非常实用,可以从内存读dll了
  • 还可以,解决了自己的程序问题。
  • 坑爹的东西。有BUG
  • 可以用,不过还是没有能够达到我的要求。。
  • 可以用,谢谢,
  • 非常实用,可以从内存读dll了
  • 源码好像是有些问题的,加载收DLL的线程无法启动