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 ImgDelayDescr * PImgDelayDescr
 
typedef const ImgDelayDescr * PCImgDelayDescr
 
typedef struct DelayLoadProc DelayLoadProc
 
typedef struct DelayLoadInfo DelayLoadInfo
 
typedef struct DelayLoadInfo * PDelayLoadInfo
 
typedef FARPROC(WINAPI * PfnDliHook )(unsigned dliNotify, PDelayLoadInfo pdli)
 
typedef struct UnloadInfo * PUnloadInfo
 
typedef struct UnloadInfo UnloadInfo
 
typedef InternalImgDelayDescr * PIIDD
 
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 WdllLoadNotify * notify_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.