mirror of https://github.com/lukechilds/node.git
Browse Source
The delay-load hook allows node.exe/iojs.exe to be renamed. Seev2.3.1-releaseefadffe
for more background. This commit is a combined squash of the following previous patches:ba93c583bc
,3bda6cbfa4
,0d6d3dda95
. PR-URL: https://github.com/nodejs/io.js/pull/1763 Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
committed by
Jeremiah Senkpiel
2 changed files with 58 additions and 0 deletions
@ -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 |
Loading…
Reference in new issue