| 1 | /** | 
 
 
 
 
 | 2 | * This file has no copyright assigned and is placed in the Public Domain. | 
 
 
 
 
 | 3 | * This file is part of the mingw-w64 runtime package. | 
 
 
 
 
 | 4 | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 
 
 
 
 
 | 5 | */ | 
 
 
 
 
 | 6 | #define _DELAY_IMP_VER 2 | 
 
 
 
 
 | 7 |  | 
 
 
 
 
 | 8 | #if defined(__cplusplus) | 
 
 
 
 
 | 9 | #define ExternC extern "C" | 
 
 
 
 
 | 10 | #else | 
 
 
 
 
 | 11 | #define ExternC extern | 
 
 
 
 
 | 12 | #endif | 
 
 
 
 
 | 13 |  | 
 
 
 
 
 | 14 | typedef IMAGE_THUNK_DATA *PImgThunkData; | 
 
 
 
 
 | 15 | typedef const IMAGE_THUNK_DATA *PCImgThunkData; | 
 
 
 
 
 | 16 | typedef DWORD RVA; | 
 
 
 
 
 | 17 |  | 
 
 
 
 
 | 18 | typedef struct ImgDelayDescr { | 
 
 
 
 
 | 19 | DWORD grAttrs; | 
 
 
 
 
 | 20 | RVA rvaDLLName; | 
 
 
 
 
 | 21 | RVA rvaHmod; | 
 
 
 
 
 | 22 | RVA rvaIAT; | 
 
 
 
 
 | 23 | RVA rvaINT; | 
 
 
 
 
 | 24 | RVA rvaBoundIAT; | 
 
 
 
 
 | 25 | RVA rvaUnloadIAT; | 
 
 
 
 
 | 26 | DWORD dwTimeStamp; | 
 
 
 
 
 | 27 | } ImgDelayDescr,*PImgDelayDescr; | 
 
 
 
 
 | 28 |  | 
 
 
 
 
 | 29 | typedef const ImgDelayDescr *PCImgDelayDescr; | 
 
 
 
 
 | 30 |  | 
 
 
 
 
 | 31 | enum DLAttr { | 
 
 
 
 
 | 32 | dlattrRva = 0x1 | 
 
 
 
 
 | 33 | }; | 
 
 
 
 
 | 34 |  | 
 
 
 
 
 | 35 | enum { | 
 
 
 
 
 | 36 | dliStartProcessing,dliNoteStartProcessing = dliStartProcessing,dliNotePreLoadLibrary,dliNotePreGetProcAddress,dliFailLoadLib, | 
 
 
 
 
 | 37 | dliFailGetProc,dliNoteEndProcessing | 
 
 
 
 
 | 38 | }; | 
 
 
 
 
 | 39 |  | 
 
 
 
 
 | 40 | typedef struct DelayLoadProc { | 
 
 
 
 
 | 41 | WINBOOL fImportByName; | 
 
 
 
 
 | 42 | __C89_NAMELESS union { | 
 
 
 
 
 | 43 | LPCSTR szProcName; | 
 
 
 
 
 | 44 | DWORD dwOrdinal; | 
 
 
 
 
 | 45 | }; | 
 
 
 
 
 | 46 | } DelayLoadProc; | 
 
 
 
 
 | 47 |  | 
 
 
 
 
 | 48 | typedef struct DelayLoadInfo { | 
 
 
 
 
 | 49 | DWORD cb; | 
 
 
 
 
 | 50 | PCImgDelayDescr pidd; | 
 
 
 
 
 | 51 | FARPROC *ppfn; | 
 
 
 
 
 | 52 | LPCSTR szDll; | 
 
 
 
 
 | 53 | DelayLoadProc dlp; | 
 
 
 
 
 | 54 | HMODULE hmodCur; | 
 
 
 
 
 | 55 | FARPROC pfnCur; | 
 
 
 
 
 | 56 | DWORD dwLastError; | 
 
 
 
 
 | 57 | } DelayLoadInfo,*PDelayLoadInfo; | 
 
 
 
 
 | 58 |  | 
 
 
 
 
 | 59 | typedef FARPROC (WINAPI *PfnDliHook)(unsigned dliNotify,PDelayLoadInfo pdli); | 
 
 
 
 
 | 60 |  | 
 
 
 
 
 | 61 | ExternC WINBOOL WINAPI __FUnloadDelayLoadedDLL2(LPCSTR szDll); | 
 
 
 
 
 | 62 | ExternC HRESULT WINAPI __HrLoadAllImportsForDll(LPCSTR szDll); | 
 
 
 
 
 | 63 |  | 
 
 
 
 
 | 64 | #define FACILITY_VISUALCPP ((LONG)0x6d) | 
 
 
 
 
 | 65 | #define VcppException(sev,err) ((sev) | (FACILITY_VISUALCPP<<16) | err) | 
 
 
 
 
 | 66 |  | 
 
 
 
 
 | 67 | ExternC PfnDliHook __pfnDliNotifyHook2; | 
 
 
 
 
 | 68 | ExternC PfnDliHook __pfnDliFailureHook2; |