Reactos
1#ifndef _delayimp_h
2#define _delayimp_h
3
4#ifdef __GNUC__
5/* Hack, for bug in ld. Will be removed soon. */
6#define __ImageBase __MINGW_LSYMBOL(_image_base__)
7#endif
8
9#if defined(__cplusplus)
10#define ExternC extern "C"
11#else
12#define ExternC extern
13#endif
14
15#ifndef FACILITY_VISUALCPP
16#define FACILITY_VISUALCPP ((LONG)0x6d)
17#endif
18#define VcppException(sev,err) ((sev) | (FACILITY_VISUALCPP<<16) | err)
19
20#define DELAYLOAD_VERSION 0x200
21
22typedef DWORD RVA;
23typedef IMAGE_THUNK_DATA *PImgThunkData;
24typedef const IMAGE_THUNK_DATA *PCImgThunkData;
25
26enum DLAttr
27{
28 dlattrRva = 0x1,
29};
30
31/* Notification codes */
32enum
33{
34 dliStartProcessing,
35 dliNotePreLoadLibrary,
36 dliNotePreGetProcAddress,
37 dliFailLoadLib,
38 dliFailGetProc,
39 dliNoteEndProcessing,
40};
41
42typedef struct ImgDelayDescr
43{
44 DWORD grAttrs;
45 RVA rvaDLLName;
46 RVA rvaHmod;
47 RVA rvaIAT;
48 RVA rvaINT;
49 RVA rvaBoundIAT;
50 RVA rvaUnloadIAT;
51 DWORD dwTimeStamp;
52} ImgDelayDescr, *PImgDelayDescr;
53typedef const ImgDelayDescr *PCImgDelayDescr;
54
55typedef struct DelayLoadProc
56{
57 BOOL fImportByName;
58 union
59 {
60 LPCSTR szProcName;
61 DWORD dwOrdinal;
62 };
63} DelayLoadProc;
64
65typedef struct DelayLoadInfo
66{
67 DWORD cb;
68 PCImgDelayDescr pidd;
69 FARPROC *ppfn;
70 LPCSTR szDll;
71 DelayLoadProc dlp;
72 HMODULE hmodCur;
73 FARPROC pfnCur;
74 DWORD dwLastError;
75} DelayLoadInfo, *PDelayLoadInfo;
76
77typedef FARPROC (WINAPI *PfnDliHook)(unsigned, PDelayLoadInfo);
78
79
80ExternC PfnDliHook __pfnDliNotifyHook2;
81ExternC PfnDliHook __pfnDliFailureHook2;
82
83#endif /* not _delayimp_h */