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;
69