# MemoryModulePP
MemoryModulePP, used to load a DLL from memory. MemoryModulePP is compatible with Win32 API and supports exception handling.
**MemoryModulePP is developed based on [MemoryModule][ref1].**
## Features
- Compatible with Win32 API (GetModuleHandle, GetModuleFileName, GetProcAddress and any Resource API)
- Support for C++ exceptions and SEH
> In order to support 32-bit dll exception handling, the dll should enable the /SAFESEH linker option,
> otherwise the exception handler cannot pass the ```RtlIsValidHandler()``` check when an exception occurs
- Support reference counting
- Support Thread Local Storage
*There are 2 ways to handle tls: MmpTls and LdrpTls, which you can control via ```MMPP_USE_TLS``` macro in stdafx.h.*
| MmpTls(MmpTls.cpp) | LdrpTls(MmpLdrpTls.cpp) | |
|---|---|---|
| Description | Implemented by MemoryModulePP | Implemented by NTDLL |
| Compatibility | Medium | Low |
| Stability | Low | High |