Release 990226.
[wine/gsoc-2012-control.git] / include / flatthunk.h
blob2a8059bce177100b4937476d75ea8f5b4ff231dd
1 /*
2 * Win95 Flat Thunk data structures
4 * Copyright 1998 Ulrich Weigand
5 */
7 #ifndef __WINE_FLATTHUNK_H
8 #define __WINE_FLATTHUNK_H
10 struct ThunkDataCommon
12 char magic[4]; /* 00 */
13 DWORD checksum; /* 04 */
16 struct ThunkDataLS16
18 struct ThunkDataCommon common; /* 00 */
19 SEGPTR targetTable; /* 08 */
20 DWORD firstTime; /* 0C */
23 struct ThunkDataLS32
25 struct ThunkDataCommon common; /* 00 */
26 DWORD * targetTable; /* 08 */
27 char lateBinding[4]; /* 0C */
28 DWORD flags; /* 10 */
29 DWORD reserved1; /* 14 */
30 DWORD reserved2; /* 18 */
31 DWORD offsetQTThunk; /* 1C */
32 DWORD offsetFTProlog; /* 20 */
35 struct ThunkDataSL16
37 struct ThunkDataCommon common; /* 00 */
38 DWORD flags1; /* 08 */
39 DWORD reserved1; /* 0C */
40 struct ThunkDataSL * fpData; /* 10 */
41 SEGPTR spData; /* 14 */
42 DWORD reserved2; /* 18 */
43 char lateBinding[4]; /* 1C */
44 DWORD flags2; /* 20 */
45 DWORD reserved3; /* 20 */
46 SEGPTR apiDatabase; /* 28 */
49 struct ThunkDataSL32
51 struct ThunkDataCommon common; /* 00 */
52 DWORD reserved1; /* 08 */
53 struct ThunkDataSL * data; /* 0C */
54 char lateBinding[4]; /* 10 */
55 DWORD flags; /* 14 */
56 DWORD reserved2; /* 18 */
57 DWORD reserved3; /* 1C */
58 DWORD offsetTargetTable; /* 20 */
61 struct ThunkDataSL
63 #if 0
64 This structure differs from the Win95 original,
65 but this should not matter since it is strictly internal to
66 the thunk handling routines in KRNL386 / KERNEL32.
68 For reference, here is the Win95 layout:
70 struct ThunkDataCommon common; /* 00 */
71 DWORD flags1; /* 08 */
72 SEGPTR apiDatabase; /* 0C */
73 WORD exePtr; /* 10 */
74 WORD segMBA; /* 12 */
75 DWORD lenMBATotal; /* 14 */
76 DWORD lenMBAUsed; /* 18 */
77 DWORD flags2; /* 1C */
78 char pszDll16[256]; /* 20 */
79 char pszDll32[256]; /*120 */
81 We do it differently since all our thunk handling is done
82 by 32-bit code. Therefore we do not need do provide
83 easy access to this data, especially the process target
84 table database, for 16-bit code.
85 #endif
87 struct ThunkDataCommon common;
88 DWORD flags1;
89 struct SLApiDB * apiDB;
90 struct SLTargetDB * targetDB;
91 DWORD flags2;
92 char pszDll16[256];
93 char pszDll32[256];
96 struct SLTargetDB
98 struct SLTargetDB * next;
99 PDB * process;
100 DWORD * targetTable;
103 struct SLApiDB
105 DWORD nrArgBytes;
106 DWORD errorReturnValue;
110 #endif /* __WINE_FLATTHUNK_H */