Pyrogenesis  trunk
Classes | Macros | Typedefs | Enumerations | Functions | Variables
wdll_delay_load.cpp File Reference
#include "precompiled.h"
#include "lib/sysdep/os/win/wdll_delay_load.h"
#include "lib/sysdep/cpu.h"
#include "lib/sysdep/os/win/win.h"
#include "lib/sysdep/os/win/winit.h"
Include dependency graph for wdll_delay_load.cpp:

Classes

struct  ImgDelayDescr
 
struct  DelayLoadProc
 
struct  DelayLoadInfo
 
struct  UnloadInfo
 
struct  ULI
 
struct  InternalImgDelayDescr
 

Macros

#define FACILITY_VISUALCPP   ((LONG)0x6d)
 
#define VcppException(sev, status)   ((sev) | (FACILITY_VISUALCPP<<16) | status)
 

Typedefs

typedef IMAGE_THUNK_DATA * PImgThunkData
 
typedef const IMAGE_THUNK_DATA * PCImgThunkData
 
typedef DWORD RVA
 
typedef struct ImgDelayDescr ImgDelayDescr
 
typedef struct ImgDelayDescrPImgDelayDescr
 
typedef const ImgDelayDescrPCImgDelayDescr
 
typedef struct DelayLoadProc DelayLoadProc
 
typedef struct DelayLoadInfo DelayLoadInfo
 
typedef struct DelayLoadInfoPDelayLoadInfo
 
typedef FARPROC(WINAPIPfnDliHook) (unsigned dliNotify, PDelayLoadInfo pdli)
 
typedef struct UnloadInfoPUnloadInfo
 
typedef struct UnloadInfo UnloadInfo
 
typedef InternalImgDelayDescrPIIDD
 
typedef const InternalImgDelayDescrPCIIDD
 

Enumerations

enum  DLAttr { dlattrRva = 0x1 }
 
enum  {
  dliStartProcessing, dliNoteStartProcessing = dliStartProcessing, dliNotePreLoadLibrary, dliNotePreGetProcAddress,
  dliFailLoadLib, dliFailGetProc, dliNoteEndProcessing
}
 

Functions

 WINIT_REGISTER_LATE_SHUTDOWN2 (wdll_Shutdown)
 
void wdll_add_notify (WdllLoadNotify *notify)
 
static FARPROC WINAPI notify_hook (unsigned dliNotify, PDelayLoadInfo pdli)
 
unsigned IndexFromPImgThunkData (PCImgThunkData pitdCur, PCImgThunkData pitdBase)
 
template<class X >
X PFromRva (RVA rva)
 
unsigned CountOfImports (PCImgThunkData pitdBase)
 
static PIMAGE_NT_HEADERS WINAPI PinhFromImageBase (HMODULE hmod)
 
static void WINAPI OverlayIAT (PImgThunkData pitdDst, PCImgThunkData pitdSrc)
 
static DWORD WINAPI TimeStampOfImage (PIMAGE_NT_HEADERS pinh)
 
static bool WINAPI FLoadedAtPreferredAddress (PIMAGE_NT_HEADERS pinh, HMODULE hmod)
 
FARPROC WINAPI __delayLoadHelper2 (PCImgDelayDescr pidd, FARPROC *ppfnIATEntry)
 
static void UnloadAllDlls ()
 
static Status wdll_Shutdown ()
 

Variables

static WdllLoadNotifynotify_list
 
EXTERN_C PfnDliHook __pfnDliNotifyHook2 = notify_hook
 
EXTERN_C PfnDliHook __pfnDliFailureHook2 = 0
 
const IMAGE_DOS_HEADER __ImageBase
 
PUnloadInfo __puiHead = 0
 

Macro Definition Documentation

◆ FACILITY_VISUALCPP

#define FACILITY_VISUALCPP   ((LONG)0x6d)

◆ VcppException

#define VcppException (   sev,
  status 
)    ((sev) | (FACILITY_VISUALCPP<<16) | status)

Typedef Documentation

◆ DelayLoadInfo

typedef struct DelayLoadInfo DelayLoadInfo

◆ DelayLoadProc

typedef struct DelayLoadProc DelayLoadProc

◆ ImgDelayDescr

typedef struct ImgDelayDescr ImgDelayDescr

◆ PCIIDD

typedef const InternalImgDelayDescr* PCIIDD

◆ PCImgDelayDescr

◆ PCImgThunkData

typedef const IMAGE_THUNK_DATA* PCImgThunkData

◆ PDelayLoadInfo

typedef struct DelayLoadInfo * PDelayLoadInfo

◆ PfnDliHook

typedef FARPROC(WINAPI * PfnDliHook) (unsigned dliNotify, PDelayLoadInfo pdli)

◆ PIIDD

◆ PImgDelayDescr

typedef struct ImgDelayDescr * PImgDelayDescr

◆ PImgThunkData

typedef IMAGE_THUNK_DATA* PImgThunkData

◆ PUnloadInfo

typedef struct UnloadInfo* PUnloadInfo

◆ RVA

typedef DWORD RVA

◆ UnloadInfo

typedef struct UnloadInfo UnloadInfo

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
dliStartProcessing 
dliNoteStartProcessing 
dliNotePreLoadLibrary 
dliNotePreGetProcAddress 
dliFailLoadLib 
dliFailGetProc 
dliNoteEndProcessing 

◆ DLAttr

enum DLAttr
Enumerator
dlattrRva 

Function Documentation

◆ __delayLoadHelper2()

FARPROC WINAPI __delayLoadHelper2 ( PCImgDelayDescr  pidd,
FARPROC *  ppfnIATEntry 
)

◆ CountOfImports()

unsigned CountOfImports ( PCImgThunkData  pitdBase)
inline

◆ FLoadedAtPreferredAddress()

static bool WINAPI FLoadedAtPreferredAddress ( PIMAGE_NT_HEADERS  pinh,
HMODULE  hmod 
)
inlinestatic

◆ IndexFromPImgThunkData()

unsigned IndexFromPImgThunkData ( PCImgThunkData  pitdCur,
PCImgThunkData  pitdBase 
)
inline

◆ notify_hook()

static FARPROC WINAPI notify_hook ( unsigned  dliNotify,
PDelayLoadInfo  pdli 
)
static

◆ OverlayIAT()

static void WINAPI OverlayIAT ( PImgThunkData  pitdDst,
PCImgThunkData  pitdSrc 
)
inlinestatic

◆ PFromRva()

template<class X >
X PFromRva ( RVA  rva)

◆ PinhFromImageBase()

static PIMAGE_NT_HEADERS WINAPI PinhFromImageBase ( HMODULE  hmod)
inlinestatic

◆ TimeStampOfImage()

static DWORD WINAPI TimeStampOfImage ( PIMAGE_NT_HEADERS  pinh)
inlinestatic

◆ UnloadAllDlls()

static void UnloadAllDlls ( )
static

◆ wdll_add_notify()

void wdll_add_notify ( WdllLoadNotify notify)

◆ wdll_Shutdown()

static Status wdll_Shutdown ( )
static

◆ WINIT_REGISTER_LATE_SHUTDOWN2()

WINIT_REGISTER_LATE_SHUTDOWN2 ( wdll_Shutdown  )

Variable Documentation

◆ __ImageBase

const IMAGE_DOS_HEADER __ImageBase

◆ __pfnDliFailureHook2

EXTERN_C PfnDliHook __pfnDliFailureHook2 = 0

◆ __pfnDliNotifyHook2

EXTERN_C PfnDliHook __pfnDliNotifyHook2 = notify_hook

◆ __puiHead

PUnloadInfo __puiHead = 0

◆ notify_list

WdllLoadNotify* notify_list
static