2 * Win95 Flat Thunk data structures
4 * Copyright 1998 Ulrich Weigand
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 #ifndef __WINE_FLATTHUNK_H
22 #define __WINE_FLATTHUNK_H
26 struct ThunkDataCommon
28 char magic
[4]; /* 00 */
29 DWORD checksum
; /* 04 */
34 struct ThunkDataCommon common
; /* 00 */
35 SEGPTR targetTable
; /* 08 */
36 DWORD firstTime
; /* 0C */
41 struct ThunkDataCommon common
; /* 00 */
42 DWORD
* targetTable
; /* 08 */
43 char lateBinding
[4]; /* 0C */
45 DWORD reserved1
; /* 14 */
46 DWORD reserved2
; /* 18 */
47 DWORD offsetQTThunk
; /* 1C */
48 DWORD offsetFTProlog
; /* 20 */
53 struct ThunkDataCommon common
; /* 00 */
54 DWORD flags1
; /* 08 */
55 DWORD reserved1
; /* 0C */
56 struct ThunkDataSL
* fpData
; /* 10 */
57 SEGPTR spData
; /* 14 */
58 DWORD reserved2
; /* 18 */
59 char lateBinding
[4]; /* 1C */
60 DWORD flags2
; /* 20 */
61 DWORD reserved3
; /* 20 */
62 SEGPTR apiDatabase
; /* 28 */
67 struct ThunkDataCommon common
; /* 00 */
68 DWORD reserved1
; /* 08 */
69 struct ThunkDataSL
* data
; /* 0C */
70 char lateBinding
[4]; /* 10 */
72 DWORD reserved2
; /* 18 */
73 DWORD reserved3
; /* 1C */
74 DWORD offsetTargetTable
; /* 20 */
80 This structure differs from the Win95 original
,
81 but
this should
not matter since it is strictly internal to
82 the thunk handling routines in KRNL386
/ KERNEL32
.
84 For reference
, here is the Win95 layout
:
86 struct ThunkDataCommon common
; /* 00 */
87 DWORD flags1
; /* 08 */
88 SEGPTR apiDatabase
; /* 0C */
91 DWORD lenMBATotal
; /* 14 */
92 DWORD lenMBAUsed
; /* 18 */
93 DWORD flags2
; /* 1C */
94 char pszDll16
[256]; /* 20 */
95 char pszDll32
[256]; /*120 */
97 We
do it differently since all our thunk handling is done
98 by
32-bit code
. Therefore we
do not need
do provide
99 easy access to
this data
, especially the process target
100 table database
, for 16-bit code
.
103 struct ThunkDataCommon common
;
105 struct SLApiDB
* apiDB
;
106 struct SLTargetDB
* targetDB
;
114 struct SLTargetDB
* next
;
122 DWORD errorReturnValue
;
126 #endif /* __WINE_FLATTHUNK_H */