Pyrogenesis  13997
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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"

Go to the source code of this file.

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
InternalImgDelayDescr
PCIIDD
 

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

#define FACILITY_VISUALCPP   ((LONG)0x6d)

Definition at line 43 of file wdll_delay_load.cpp.

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

Definition at line 44 of file wdll_delay_load.cpp.

Typedef Documentation

typedef struct DelayLoadInfo DelayLoadInfo
typedef struct DelayLoadProc DelayLoadProc
typedef struct ImgDelayDescr ImgDelayDescr
typedef const InternalImgDelayDescr* PCIIDD

Definition at line 251 of file wdll_delay_load.cpp.

Definition at line 62 of file wdll_delay_load.cpp.

typedef const IMAGE_THUNK_DATA* PCImgThunkData

Definition at line 47 of file wdll_delay_load.cpp.

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

Definition at line 109 of file wdll_delay_load.cpp.

Definition at line 250 of file wdll_delay_load.cpp.

typedef struct ImgDelayDescr * PImgDelayDescr
typedef IMAGE_THUNK_DATA* PImgThunkData

Definition at line 46 of file wdll_delay_load.cpp.

typedef struct UnloadInfo* PUnloadInfo

Definition at line 183 of file wdll_delay_load.cpp.

typedef DWORD RVA

Definition at line 48 of file wdll_delay_load.cpp.

typedef struct UnloadInfo UnloadInfo

Enumeration Type Documentation

anonymous enum
Enumerator
dliStartProcessing 
dliNoteStartProcessing 
dliNotePreLoadLibrary 
dliNotePreGetProcAddress 
dliFailLoadLib 
dliFailGetProc 
dliNoteEndProcessing 

Definition at line 70 of file wdll_delay_load.cpp.

enum DLAttr
Enumerator
dlattrRva 

Definition at line 64 of file wdll_delay_load.cpp.

Function Documentation

FARPROC WINAPI __delayLoadHelper2 ( PCImgDelayDescr  pidd,
FARPROC *  ppfnIATEntry 
)

Definition at line 274 of file wdll_delay_load.cpp.

unsigned CountOfImports ( PCImgThunkData  pitdBase)
inline

Definition at line 192 of file wdll_delay_load.cpp.

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

Definition at line 269 of file wdll_delay_load.cpp.

unsigned IndexFromPImgThunkData ( PCImgThunkData  pitdCur,
PCImgThunkData  pitdBase 
)
inline

Definition at line 169 of file wdll_delay_load.cpp.

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

Definition at line 123 of file wdll_delay_load.cpp.

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

Definition at line 259 of file wdll_delay_load.cpp.

template<class X >
X PFromRva ( RVA  rva)

Definition at line 178 of file wdll_delay_load.cpp.

static PIMAGE_NT_HEADERS WINAPI PinhFromImageBase ( HMODULE  hmod)
inlinestatic

Definition at line 254 of file wdll_delay_load.cpp.

static DWORD WINAPI TimeStampOfImage ( PIMAGE_NT_HEADERS  pinh)
inlinestatic

Definition at line 264 of file wdll_delay_load.cpp.

static void UnloadAllDlls ( )
static

Definition at line 447 of file wdll_delay_load.cpp.

void wdll_add_notify ( WdllLoadNotify notify)

Definition at line 117 of file wdll_delay_load.cpp.

static Status wdll_Shutdown ( )
static

Definition at line 472 of file wdll_delay_load.cpp.

WINIT_REGISTER_LATE_SHUTDOWN2 ( wdll_Shutdown  )

Variable Documentation

const IMAGE_DOS_HEADER __ImageBase

Definition at line 175 of file wdll_delay_load.cpp.

EXTERN_C PfnDliHook __pfnDliFailureHook2 = 0

Definition at line 153 of file wdll_delay_load.cpp.

EXTERN_C PfnDliHook __pfnDliNotifyHook2 = notify_hook

Definition at line 150 of file wdll_delay_load.cpp.

PUnloadInfo __puiHead = 0

Definition at line 202 of file wdll_delay_load.cpp.

WdllLoadNotify* notify_list
static

Definition at line 115 of file wdll_delay_load.cpp.