michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: #ifndef LoadLibraryRemote_h michael@0: #define LoadLibraryRemote_h michael@0: michael@0: #include michael@0: michael@0: /** michael@0: * Inject a library into a remote process. This injection has the following michael@0: * restrictions: michael@0: * michael@0: * - The DLL being injected must only depend on kernel32 and user32. michael@0: * - The entry point of the DLL is not run. If the DLL uses the CRT, it is michael@0: * the responsibility of the caller to make sure that _CRT_INIT is called. michael@0: * - There is no support for unloading a library once it has been loaded. michael@0: * - The symbol must be a named symbol and not an ordinal. michael@0: */ michael@0: void* LoadRemoteLibraryAndGetAddress(HANDLE hRemoteProcess, michael@0: const WCHAR* library, michael@0: const char* symbol); michael@0: michael@0: #endif // LoadLibraryRemote_h