Enhanced ELF files lookup for symbolic info.
[wine/gsoc_dplay.git] / dlls / kernel / flatthunk.h
blob3703612362647ad2c0834e228d7a287e4a3e5b28
1 /*
2 * Win95 Flat Thunk data structures
4 * Copyright 1998 Ulrich Weigand
5 */
7 #ifndef __WINE_FLATTHUNK_H
8 #define __WINE_FLATTHUNK_H
10 #include "windef.h"
12 struct ThunkDataCommon
14 char magic[4]; /* 00 */
15 DWORD checksum; /* 04 */
18 struct ThunkDataLS16
20 struct ThunkDataCommon common; /* 00 */
21 SEGPTR targetTable; /* 08 */
22 DWORD firstTime; /* 0C */
25 struct ThunkDataLS32
27 struct ThunkDataCommon common; /* 00 */
28 DWORD * targetTable; /* 08 */
29 char lateBinding[4]; /* 0C */
30 DWORD flags; /* 10 */
31 DWORD reserved1; /* 14 */
32 DWORD reserved2; /* 18 */
33 DWORD offsetQTThunk; /* 1C */
34 DWORD offsetFTProlog; /* 20 */
37 struct ThunkDataSL16
39 struct ThunkDataCommon common; /* 00 */
40 DWORD flags1; /* 08 */
41 DWORD reserved1; /* 0C */
42 struct ThunkDataSL * fpData; /* 10 */
43 SEGPTR spData; /* 14 */
44 DWORD reserved2; /* 18 */
45 char lateBinding[4]; /* 1C */
46 DWORD flags2; /* 20 */
47 DWORD reserved3; /* 20 */
48 SEGPTR apiDatabase; /* 28 */
51 struct ThunkDataSL32
53 struct ThunkDataCommon common; /* 00 */
54 DWORD reserved1; /* 08 */
55 struct ThunkDataSL * data; /* 0C */
56 char lateBinding[4]; /* 10 */
57 DWORD flags; /* 14 */
58 DWORD reserved2; /* 18 */
59 DWORD reserved3; /* 1C */
60 DWORD offsetTargetTable; /* 20 */
63 struct ThunkDataSL
65 #if 0
66 This structure differs from the Win95 original,
67 but this should not matter since it is strictly internal to
68 the thunk handling routines in KRNL386 / KERNEL32.
70 For reference, here is the Win95 layout:
72 struct ThunkDataCommon common; /* 00 */
73 DWORD flags1; /* 08 */
74 SEGPTR apiDatabase; /* 0C */
75 WORD exePtr; /* 10 */
76 WORD segMBA; /* 12 */
77 DWORD lenMBATotal; /* 14 */
78 DWORD lenMBAUsed; /* 18 */
79 DWORD flags2; /* 1C */
80 char pszDll16[256]; /* 20 */
81 char pszDll32[256]; /*120 */
83 We do it differently since all our thunk handling is done
84 by 32-bit code. Therefore we do not need do provide
85 easy access to this data, especially the process target
86 table database, for 16-bit code.
87 #endif
89 struct ThunkDataCommon common;
90 DWORD flags1;
91 struct SLApiDB * apiDB;
92 struct SLTargetDB * targetDB;
93 DWORD flags2;
94 char pszDll16[256];
95 char pszDll32[256];
98 struct SLTargetDB
100 struct SLTargetDB * next;
101 DWORD process;
102 DWORD * targetTable;
105 struct SLApiDB
107 DWORD nrArgBytes;
108 DWORD errorReturnValue;
112 #endif /* __WINE_FLATTHUNK_H */