#ifdef _MSC_VER

#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif

// 'windows.h' must be before 'delayimp.h', otherwise, there would be build
// error as follows.
//
// delayimp.h(18,9): error: unknown type name 'IMAGE_THUNK_DATA'
// delayimp.h(73,5): error: unknown type name 'FARPROC'
// ...

// clang-format off
#include <windows.h>
#include <delayimp.h>
// clang-format on

#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, "NODE.EXE") != 0) {
    return NULL;
  }

  m = GetModuleHandle(NULL);
  return (FARPROC)m;
}

decltype(__pfnDliNotifyHook2) __pfnDliNotifyHook2 = load_exe_hook;

#endif
