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
14typedef IMAGE_THUNK_DATA *PImgThunkData;
15typedef const IMAGE_THUNK_DATA *PCImgThunkData;
16typedef DWORD RVA;
17
18typedef 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
29typedef const ImgDelayDescr *PCImgDelayDescr;
30
31enum DLAttr {
32  dlattrRva = 0x1
33};
34
35enum {
36  dliStartProcessing,dliNoteStartProcessing = dliStartProcessing,dliNotePreLoadLibrary,dliNotePreGetProcAddress,dliFailLoadLib,
37  dliFailGetProc,dliNoteEndProcessing
38};
39
40typedef struct DelayLoadProc {
41  WINBOOL fImportByName;
42  __C89_NAMELESS union {
43    LPCSTR szProcName;
44    DWORD dwOrdinal;
45  };
46} DelayLoadProc;
47
48typedef 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
59typedef FARPROC (WINAPI *PfnDliHook)(unsigned dliNotify,PDelayLoadInfo pdli);
60
61ExternC WINBOOL WINAPI __FUnloadDelayLoadedDLL2(LPCSTR szDll);
62ExternC HRESULT WINAPI __HrLoadAllImportsForDll(LPCSTR szDll);
63
64#define FACILITY_VISUALCPP ((LONG)0x6d)
65#define VcppException(sev,err) ((sev) | (FACILITY_VISUALCPP<<16) | err)
66
67ExternC PfnDliHook __pfnDliNotifyHook2;
68ExternC PfnDliHook __pfnDliFailureHook2;
69