diff options
Diffstat (limited to 'deps/npm/node_modules/node-gyp/src/win_delay_load_hook.c')
-rw-r--r-- | deps/npm/node_modules/node-gyp/src/win_delay_load_hook.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/deps/npm/node_modules/node-gyp/src/win_delay_load_hook.c b/deps/npm/node_modules/node-gyp/src/win_delay_load_hook.c new file mode 100644 index 0000000000..f397cfa195 --- /dev/null +++ b/deps/npm/node_modules/node-gyp/src/win_delay_load_hook.c @@ -0,0 +1,33 @@ +/* + * When this file is linked to a DLL, it sets up a delay-load hook that + * intervenes when the DLL is trying to load 'node.exe' or 'iojs.exe' + * dynamically. Instead of trying to locate the .exe file it'll just return + * a handle to the process image. + * + * This allows compiled addons to work when node.exe or iojs.exe is renamed. + */ + +#ifdef _MSC_VER + +#define WIN32_LEAN_AND_MEAN +#include <windows.h> + +#include <delayimp.h> +#include <string.h> + +static FARPROC WINAPI load_exe_hook(unsigned int event, DelayLoadInfo* info) { + HMODULE m; + if (event != dliNotePreLoadLibrary) + return NULL; + + if (_stricmp(info->szDll, "iojs.exe") != 0 && + _stricmp(info->szDll, "node.exe") != 0) + return NULL; + + m = GetModuleHandle(NULL); + return (FARPROC) m; +} + +PfnDliHook __pfnDliNotifyHook2 = load_exe_hook; + +#endif |