Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
c1acebc3
Commit
c1acebc3
authored
Feb 12, 2004
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Get rid of the flatthunk.h header.
parent
a2e2e185
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
99 additions
and
131 deletions
+99
-131
flatthunk.h
dlls/kernel/flatthunk.h
+0
-130
thunk.c
dlls/kernel/thunk.c
+99
-1
No files found.
dlls/kernel/flatthunk.h
deleted
100644 → 0
View file @
a2e2e185
/*
* Win95 Flat Thunk data structures
*
* Copyright 1998 Ulrich Weigand
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __WINE_FLATTHUNK_H
#define __WINE_FLATTHUNK_H
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
struct
ThunkDataCommon
{
char
magic
[
4
];
/* 00 */
DWORD
checksum
;
/* 04 */
};
struct
ThunkDataLS16
{
struct
ThunkDataCommon
common
;
/* 00 */
SEGPTR
targetTable
;
/* 08 */
DWORD
firstTime
;
/* 0C */
};
struct
ThunkDataLS32
{
struct
ThunkDataCommon
common
;
/* 00 */
DWORD
*
targetTable
;
/* 08 */
char
lateBinding
[
4
];
/* 0C */
DWORD
flags
;
/* 10 */
DWORD
reserved1
;
/* 14 */
DWORD
reserved2
;
/* 18 */
DWORD
offsetQTThunk
;
/* 1C */
DWORD
offsetFTProlog
;
/* 20 */
};
struct
ThunkDataSL16
{
struct
ThunkDataCommon
common
;
/* 00 */
DWORD
flags1
;
/* 08 */
DWORD
reserved1
;
/* 0C */
struct
ThunkDataSL
*
fpData
;
/* 10 */
SEGPTR
spData
;
/* 14 */
DWORD
reserved2
;
/* 18 */
char
lateBinding
[
4
];
/* 1C */
DWORD
flags2
;
/* 20 */
DWORD
reserved3
;
/* 20 */
SEGPTR
apiDatabase
;
/* 28 */
};
struct
ThunkDataSL32
{
struct
ThunkDataCommon
common
;
/* 00 */
DWORD
reserved1
;
/* 08 */
struct
ThunkDataSL
*
data
;
/* 0C */
char
lateBinding
[
4
];
/* 10 */
DWORD
flags
;
/* 14 */
DWORD
reserved2
;
/* 18 */
DWORD
reserved3
;
/* 1C */
DWORD
offsetTargetTable
;
/* 20 */
};
struct
ThunkDataSL
{
#if 0
This structure differs from the Win95 original,
but this should not matter since it is strictly internal to
the thunk handling routines in KRNL386 / KERNEL32.
For reference, here is the Win95 layout:
struct ThunkDataCommon common; /* 00 */
DWORD flags1; /* 08 */
SEGPTR apiDatabase; /* 0C */
WORD exePtr; /* 10 */
WORD segMBA; /* 12 */
DWORD lenMBATotal; /* 14 */
DWORD lenMBAUsed; /* 18 */
DWORD flags2; /* 1C */
char pszDll16[256]; /* 20 */
char pszDll32[256]; /*120 */
We do it differently since all our thunk handling is done
by 32-bit code. Therefore we do not need do provide
easy access to this data, especially the process target
table database, for 16-bit code.
#endif
struct
ThunkDataCommon
common
;
DWORD
flags1
;
struct
SLApiDB
*
apiDB
;
struct
SLTargetDB
*
targetDB
;
DWORD
flags2
;
char
pszDll16
[
256
];
char
pszDll32
[
256
];
};
struct
SLTargetDB
{
struct
SLTargetDB
*
next
;
DWORD
process
;
DWORD
*
targetTable
;
};
struct
SLApiDB
{
DWORD
nrArgBytes
;
DWORD
errorReturnValue
;
};
#endif
/* __WINE_FLATTHUNK_H */
dlls/kernel/thunk.c
View file @
c1acebc3
...
...
@@ -40,13 +40,111 @@
#include "wine/debug.h"
#include "wine/library.h"
#include "flatthunk.h"
#include "module.h"
#include "stackframe.h"
#include "kernel_private.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
thunk
);
struct
ThunkDataCommon
{
char
magic
[
4
];
/* 00 */
DWORD
checksum
;
/* 04 */
};
struct
ThunkDataLS16
{
struct
ThunkDataCommon
common
;
/* 00 */
SEGPTR
targetTable
;
/* 08 */
DWORD
firstTime
;
/* 0C */
};
struct
ThunkDataLS32
{
struct
ThunkDataCommon
common
;
/* 00 */
DWORD
*
targetTable
;
/* 08 */
char
lateBinding
[
4
];
/* 0C */
DWORD
flags
;
/* 10 */
DWORD
reserved1
;
/* 14 */
DWORD
reserved2
;
/* 18 */
DWORD
offsetQTThunk
;
/* 1C */
DWORD
offsetFTProlog
;
/* 20 */
};
struct
ThunkDataSL16
{
struct
ThunkDataCommon
common
;
/* 00 */
DWORD
flags1
;
/* 08 */
DWORD
reserved1
;
/* 0C */
struct
ThunkDataSL
*
fpData
;
/* 10 */
SEGPTR
spData
;
/* 14 */
DWORD
reserved2
;
/* 18 */
char
lateBinding
[
4
];
/* 1C */
DWORD
flags2
;
/* 20 */
DWORD
reserved3
;
/* 20 */
SEGPTR
apiDatabase
;
/* 28 */
};
struct
ThunkDataSL32
{
struct
ThunkDataCommon
common
;
/* 00 */
DWORD
reserved1
;
/* 08 */
struct
ThunkDataSL
*
data
;
/* 0C */
char
lateBinding
[
4
];
/* 10 */
DWORD
flags
;
/* 14 */
DWORD
reserved2
;
/* 18 */
DWORD
reserved3
;
/* 1C */
DWORD
offsetTargetTable
;
/* 20 */
};
struct
ThunkDataSL
{
#if 0
This structure differs from the Win95 original,
but this should not matter since it is strictly internal to
the thunk handling routines in KRNL386 / KERNEL32.
For reference, here is the Win95 layout:
struct ThunkDataCommon common; /* 00 */
DWORD flags1; /* 08 */
SEGPTR apiDatabase; /* 0C */
WORD exePtr; /* 10 */
WORD segMBA; /* 12 */
DWORD lenMBATotal; /* 14 */
DWORD lenMBAUsed; /* 18 */
DWORD flags2; /* 1C */
char pszDll16[256]; /* 20 */
char pszDll32[256]; /*120 */
We do it differently since all our thunk handling is done
by 32-bit code. Therefore we do not need do provide
easy access to this data, especially the process target
table database, for 16-bit code.
#endif
struct
ThunkDataCommon
common
;
DWORD
flags1
;
struct
SLApiDB
*
apiDB
;
struct
SLTargetDB
*
targetDB
;
DWORD
flags2
;
char
pszDll16
[
256
];
char
pszDll32
[
256
];
};
struct
SLTargetDB
{
struct
SLTargetDB
*
next
;
DWORD
process
;
DWORD
*
targetTable
;
};
struct
SLApiDB
{
DWORD
nrArgBytes
;
DWORD
errorReturnValue
;
};
#ifdef __i386__
extern
void
__wine_call_from_16_thunk
();
#else
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment