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
2c7a2480
Commit
2c7a2480
authored
May 07, 2005
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Converted all the kernel32 register functions to the
DEFINE_REGS_ENTRYPOINT mechanism.
parent
84e00d48
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
163 additions
and
186 deletions
+163
-186
heap.c
dlls/kernel/heap.c
+8
-3
kernel32.spec
dlls/kernel/kernel32.spec
+65
-65
krnl386.exe.spec
dlls/kernel/krnl386.exe.spec
+2
-2
ne_module.c
dlls/kernel/ne_module.c
+16
-4
selector.c
dlls/kernel/selector.c
+68
-111
thunk.c
dlls/kernel/thunk.c
+0
-0
vxd.c
dlls/kernel/vxd.c
+4
-1
No files found.
dlls/kernel/heap.c
View file @
2c7a2480
...
...
@@ -980,7 +980,7 @@ BOOL WINAPI LocalUnlock(
*
* The SEGPTR is used by the caller!
*/
void
AllocMappedBuffer
(
CONTEXT86
*
context
)
void
WINAPI
__regs_
AllocMappedBuffer
(
CONTEXT86
*
context
)
{
HGLOBAL
handle
=
GlobalAlloc
(
0
,
context
->
Edi
+
8
);
DWORD
*
buffer
=
(
DWORD
*
)
GlobalLock
(
handle
);
...
...
@@ -1004,7 +1004,9 @@ void AllocMappedBuffer( CONTEXT86 *context )
context
->
Edi
=
(
DWORD
)(
buffer
+
2
);
}
}
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT
(
AllocMappedBuffer
,
0
,
0
);
#endif
/**********************************************************************
* FreeMappedBuffer (KERNEL32.39)
...
...
@@ -1013,7 +1015,7 @@ void AllocMappedBuffer( CONTEXT86 *context )
*
* Input: EDI register: pointer to buffer
*/
void
FreeMappedBuffer
(
CONTEXT86
*
context
)
void
WINAPI
__regs_
FreeMappedBuffer
(
CONTEXT86
*
context
)
{
if
(
context
->
Edi
)
{
...
...
@@ -1025,6 +1027,9 @@ void FreeMappedBuffer( CONTEXT86 *context )
GlobalFree
((
HGLOBAL
)
buffer
[
0
]);
}
}
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT
(
FreeMappedBuffer
,
0
,
0
);
#endif
/***********************************************************************
* GlobalMemoryStatusEx (KERNEL32.@)
...
...
dlls/kernel/kernel32.spec
View file @
2c7a2480
...
...
@@ -8,15 +8,15 @@
# - code generated by the MS Thunk Compiler
# - symbols exported by the Oct 94 beta version of kernel32.dll
1 stdcall -
register -
i386 VxDCall0(long) VxDCall
2 stdcall -
register -
i386 VxDCall1(long) VxDCall
3 stdcall -
register -
i386 VxDCall2(long) VxDCall
4 stdcall -
register -
i386 VxDCall3(long) VxDCall
5 stdcall -
register -
i386 VxDCall4(long) VxDCall
6 stdcall -
register -
i386 VxDCall5(long) VxDCall
7 stdcall -
register -
i386 VxDCall6(long) VxDCall
8 stdcall -
register -
i386 VxDCall7(long) VxDCall
9 stdcall -
register -
i386 VxDCall8(long) VxDCall
1 stdcall -i386 VxDCall0(long) VxDCall
2 stdcall -i386 VxDCall1(long) VxDCall
3 stdcall -i386 VxDCall2(long) VxDCall
4 stdcall -i386 VxDCall3(long) VxDCall
5 stdcall -i386 VxDCall4(long) VxDCall
6 stdcall -i386 VxDCall5(long) VxDCall
7 stdcall -i386 VxDCall6(long) VxDCall
8 stdcall -i386 VxDCall7(long) VxDCall
9 stdcall -i386 VxDCall8(long) VxDCall
10 stdcall k32CharToOemA(str ptr)
11 stdcall k32CharToOemBuffA(str ptr long)
12 stdcall k32OemToCharA(ptr ptr)
...
...
@@ -24,7 +24,7 @@
14 stdcall k32LoadStringA(long long ptr long)
15 varargs k32wsprintfA(str str)
16 stdcall k32wvsprintfA(ptr str ptr)
17 stdcall -
register -
i386 CommonUnimpStub()
17 stdcall -i386 CommonUnimpStub()
18 stdcall GetProcessDword(long long)
19 stub ThunkTheTemplateHandle
20 stdcall DosFileHandleToWin32Handle(long)
...
...
@@ -45,20 +45,20 @@
35 stdcall LoadLibrary16(str)
36 stdcall FreeLibrary16(long)
37 stdcall GetProcAddress16(long str) WIN32_GetProcAddress16
38 stdcall -
register -
i386 AllocMappedBuffer()
39 stdcall -
register -
i386 FreeMappedBuffer()
40 stdcall -
register -
i386 OT_32ThkLSF()
38 stdcall -i386 AllocMappedBuffer()
39 stdcall -i386 FreeMappedBuffer()
40 stdcall -i386 OT_32ThkLSF()
41 stdcall ThunkInitLSF(long str long str str)
42 stdcall -
register -
i386 LogApiThkLSF(str)
42 stdcall -i386 LogApiThkLSF(str)
43 stdcall ThunkInitLS(long str long str str)
44 stdcall -
register -
i386 LogApiThkSL(str)
45 stdcall -
register -
i386 Common32ThkLS()
44 stdcall -i386 LogApiThkSL(str)
45 stdcall -i386 Common32ThkLS()
46 stdcall ThunkInitSL(long str long str str)
47 stdcall -
register -
i386 LogCBThkSL(str)
47 stdcall -i386 LogCBThkSL(str)
48 stdcall ReleaseThunkLock(ptr)
49 stdcall RestoreThunkLock(long)
51 stdcall -
register -
i386 W32S_BackTo32()
51 stdcall -i386 W32S_BackTo32()
52 stdcall GetThunkBuff()
53 stdcall GetThunkStuff(str str)
54 stdcall K32WOWCallback16(long long)
...
...
@@ -96,8 +96,8 @@
86 stdcall @(ptr) _KERNEL32_86
87 stdcall SSOnBigStack()
88 varargs SSCall(long long ptr)
89 stdcall -
register -
i386 FT_PrologPrime()
90 stdcall -
register -
i386 QT_ThunkPrime()
89 stdcall -i386 FT_PrologPrime()
90 stdcall -i386 QT_ThunkPrime()
91 stdcall PK16FNF(ptr)
92 stdcall GetPK16SysVar()
93 stdcall GetpWin16Lock(ptr)
...
...
@@ -278,23 +278,23 @@
@ stdcall ExitThread(long)
@ stdcall ExpandEnvironmentStringsA(str ptr long)
@ stdcall ExpandEnvironmentStringsW(wstr ptr long)
@ stdcall -
register -
i386 FT_Exit0()
@ stdcall -
register -
i386 FT_Exit12()
@ stdcall -
register -
i386 FT_Exit16()
@ stdcall -
register -
i386 FT_Exit20()
@ stdcall -
register -
i386 FT_Exit24()
@ stdcall -
register -
i386 FT_Exit28()
@ stdcall -
register -
i386 FT_Exit32()
@ stdcall -
register -
i386 FT_Exit36()
@ stdcall -
register -
i386 FT_Exit40()
@ stdcall -
register -
i386 FT_Exit44()
@ stdcall -
register -
i386 FT_Exit48()
@ stdcall -
register -
i386 FT_Exit4()
@ stdcall -
register -
i386 FT_Exit52()
@ stdcall -
register -
i386 FT_Exit56()
@ stdcall -
register -
i386 FT_Exit8()
@ stdcall -
register -
i386 FT_Prolog()
@ stdcall -
register -
i386 FT_Thunk()
@ stdcall -i386 FT_Exit0()
@ stdcall -i386 FT_Exit12()
@ stdcall -i386 FT_Exit16()
@ stdcall -i386 FT_Exit20()
@ stdcall -i386 FT_Exit24()
@ stdcall -i386 FT_Exit28()
@ stdcall -i386 FT_Exit32()
@ stdcall -i386 FT_Exit36()
@ stdcall -i386 FT_Exit40()
@ stdcall -i386 FT_Exit44()
@ stdcall -i386 FT_Exit48()
@ stdcall -i386 FT_Exit4()
@ stdcall -i386 FT_Exit52()
@ stdcall -i386 FT_Exit56()
@ stdcall -i386 FT_Exit8()
@ stdcall -i386 FT_Prolog()
@ stdcall -i386 FT_Thunk()
@ stdcall FatalAppExitA(long str)
@ stdcall FatalAppExitW(long wstr)
@ stdcall FatalExit(long)
...
...
@@ -590,8 +590,8 @@
@ stdcall IsValidCodePage(long)
@ stdcall IsValidLanguageGroup(long long)
@ stdcall IsValidLocale(long long)
@ stdcall -
register -
i386 K32Thk1632Epilog()
@ stdcall -
register -
i386 K32Thk1632Prolog()
@ stdcall -i386 K32Thk1632Epilog()
@ stdcall -i386 K32Thk1632Prolog()
@ stdcall LCMapStringA(long long str long ptr long)
@ stdcall LCMapStringW(long long wstr long ptr long)
@ stdcall LeaveCriticalSection(ptr) ntdll.RtlLeaveCriticalSection
...
...
@@ -616,10 +616,10 @@
@ stdcall LockFileEx(long long long long long ptr)
@ stdcall LockResource(long)
@ stdcall MakeCriticalSectionGlobal(ptr)
@ stdcall -
register -
i386 MapHInstLS()
@ stdcall -
register -
i386 MapHInstLS_PN()
@ stdcall -
register -
i386 MapHInstSL()
@ stdcall -
register -
i386 MapHInstSL_PN()
@ stdcall -i386 MapHInstLS()
@ stdcall -i386 MapHInstLS_PN()
@ stdcall -i386 MapHInstSL()
@ stdcall -i386 MapHInstSL_PN()
@ stdcall MapHModuleLS(long)
@ stdcall MapHModuleSL(long)
@ stdcall MapLS(ptr)
...
...
@@ -666,7 +666,7 @@
@ stdcall Process32NextW (ptr ptr)
@ stdcall PulseEvent(long)
@ stdcall PurgeComm(long long)
@ stdcall -
register -
i386 QT_Thunk()
@ stdcall -i386 QT_Thunk()
@ stdcall QueryDosDeviceA(str ptr long)
@ stdcall QueryDosDeviceW(wstr ptr long)
@ stub QueryInformationJobObject
...
...
@@ -713,26 +713,26 @@
@ stdcall RtlMoveMemory(ptr ptr long) ntdll.RtlMoveMemory
@ stdcall RtlUnwind(ptr ptr ptr long) ntdll.RtlUnwind
@ stdcall RtlZeroMemory(ptr long) ntdll.RtlZeroMemory
@ stdcall -
register -
i386 SMapLS()
@ stdcall -
register -i386 SMapLS_IP_EBP_12
()
@ stdcall -
register -i386 SMapLS_IP_EBP_16
()
@ stdcall -
register -i386 SMapLS_IP_EBP_20
()
@ stdcall -
register -i386 SMapLS_IP_EBP_24
()
@ stdcall -
register -i386 SMapLS_IP_EBP_28
()
@ stdcall -
register -i386 SMapLS_IP_EBP_32
()
@ stdcall -
register -i386 SMapLS_IP_EBP_36
()
@ stdcall -
register -i386 SMapLS_IP_EBP_40
()
@ stdcall -
register -i386 SMapLS_IP_EBP_8
()
@ stdcall -
register -
i386 SUnMapLS()
@ stdcall -
register -i386 SUnMapLS_IP_EBP_12
()
@ stdcall -
register -i386 SUnMapLS_IP_EBP_16
()
@ stdcall -
register -i386 SUnMapLS_IP_EBP_20
()
@ stdcall -
register -i386 SUnMapLS_IP_EBP_24
()
@ stdcall -
register -i386 SUnMapLS_IP_EBP_28
()
@ stdcall -
register -i386 SUnMapLS_IP_EBP_32
()
@ stdcall -
register -i386 SUnMapLS_IP_EBP_36
()
@ stdcall -
register -i386 SUnMapLS_IP_EBP_40
()
@ stdcall -
register -i386 SUnMapLS_IP_EBP_8
()
@ stdcall -i386 SMapLS()
@ stdcall -
i386 SMapLS_IP_EBP_8
()
@ stdcall -
i386 SMapLS_IP_EBP_12
()
@ stdcall -
i386 SMapLS_IP_EBP_16
()
@ stdcall -
i386 SMapLS_IP_EBP_20
()
@ stdcall -
i386 SMapLS_IP_EBP_24
()
@ stdcall -
i386 SMapLS_IP_EBP_28
()
@ stdcall -
i386 SMapLS_IP_EBP_32
()
@ stdcall -
i386 SMapLS_IP_EBP_36
()
@ stdcall -
i386 SMapLS_IP_EBP_40
()
@ stdcall -i386 SUnMapLS()
@ stdcall -
i386 SUnMapLS_IP_EBP_8
()
@ stdcall -
i386 SUnMapLS_IP_EBP_12
()
@ stdcall -
i386 SUnMapLS_IP_EBP_16
()
@ stdcall -
i386 SUnMapLS_IP_EBP_20
()
@ stdcall -
i386 SUnMapLS_IP_EBP_24
()
@ stdcall -
i386 SUnMapLS_IP_EBP_28
()
@ stdcall -
i386 SUnMapLS_IP_EBP_32
()
@ stdcall -
i386 SUnMapLS_IP_EBP_36
()
@ stdcall -
i386 SUnMapLS_IP_EBP_40
()
@ stdcall ScrollConsoleScreenBufferA(long ptr ptr ptr ptr)
@ stdcall ScrollConsoleScreenBufferW(long ptr ptr ptr ptr)
@ stdcall SearchPathA(str str str long ptr ptr)
...
...
@@ -838,7 +838,7 @@
@ stdcall UTRegister(long str str str ptr ptr ptr)
@ stdcall UTUnRegister(long)
@ stdcall UnMapLS(long)
@ stdcall -
register -
i386 UnMapSLFixArray(long long)
@ stdcall -i386 UnMapSLFixArray(long long)
@ stdcall UnhandledExceptionFilter(ptr)
@ stdcall UninitializeCriticalSection(ptr)
@ stdcall UnlockFile(long long long long long)
...
...
dlls/kernel/krnl386.exe.spec
View file @
2c7a2480
...
...
@@ -374,8 +374,8 @@
469 stub WOAGimmeTitle
470 stub WOADestroyConsole
471 pascal GetCurrentProcessId() GetCurrentProcessId
472 pascal -register MapHInstLS() MapHInstLS
473 pascal -register MapHInstSL() MapHInstSL
472 pascal -register MapHInstLS()
__regs_
MapHInstLS
473 pascal -register MapHInstSL()
__regs_
MapHInstSL
474 pascal CloseW32Handle(long) CloseHandle
475 pascal -ret16 GetTEBSelectorFS() GetTEBSelectorFS16
476 pascal ConvertToGlobalHandle(long) ConvertToGlobalHandle
...
...
dlls/kernel/ne_module.c
View file @
2c7a2480
...
...
@@ -2263,32 +2263,44 @@ HMODULE WINAPI MapHModuleSL(HMODULE16 hmod)
* MapHInstLS (KERNEL32.@)
* MapHInstLS (KERNEL.472)
*/
void
MapHInstLS
(
CONTEXT86
*
context
)
void
WINAPI
__regs_
MapHInstLS
(
CONTEXT86
*
context
)
{
context
->
Eax
=
MapHModuleLS
(
(
HMODULE
)
context
->
Eax
);
}
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT
(
MapHInstLS
,
0
,
0
);
#endif
/***************************************************************************
* MapHInstSL (KERNEL32.@)
* MapHInstSL (KERNEL.473)
*/
void
MapHInstSL
(
CONTEXT86
*
context
)
void
WINAPI
__regs_
MapHInstSL
(
CONTEXT86
*
context
)
{
context
->
Eax
=
(
DWORD
)
MapHModuleSL
(
context
->
Eax
);
}
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT
(
MapHInstSL
,
0
,
0
);
#endif
/***************************************************************************
* MapHInstLS_PN (KERNEL32.@)
*/
void
MapHInstLS_PN
(
CONTEXT86
*
context
)
void
WINAPI
__regs_
MapHInstLS_PN
(
CONTEXT86
*
context
)
{
if
(
context
->
Eax
)
context
->
Eax
=
MapHModuleLS
(
(
HMODULE
)
context
->
Eax
);
}
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT
(
MapHInstLS_PN
,
0
,
0
);
#endif
/***************************************************************************
* MapHInstSL_PN (KERNEL32.@)
*/
void
MapHInstSL_PN
(
CONTEXT86
*
context
)
void
WINAPI
__regs_
MapHInstSL_PN
(
CONTEXT86
*
context
)
{
if
(
context
->
Eax
)
context
->
Eax
=
(
DWORD
)
MapHModuleSL
(
context
->
Eax
);
}
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT
(
MapHInstSL_PN
,
0
,
0
);
#endif
dlls/kernel/selector.c
View file @
2c7a2480
...
...
@@ -564,11 +564,13 @@ LPVOID WINAPI MapSLFix( SEGPTR sptr )
/***********************************************************************
* UnMapSLFixArray (KERNEL32.@)
*/
void
UnMapSLFixArray
(
SEGPTR
sptr
[],
INT
length
,
CONTEXT86
*
context
)
void
WINAPI
__regs_UnMapSLFixArray
(
SEGPTR
sptr
[],
INT
length
,
CONTEXT86
*
context
)
{
/* Must not change EAX, hence defined as 'register' function */
}
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT
(
UnMapSLFixArray
,
8
,
8
);
#endif
/***********************************************************************
* GetThreadSelectorEntry (KERNEL32.@)
...
...
@@ -637,77 +639,12 @@ BOOL WINAPI GetThreadSelectorEntry( HANDLE hthread, DWORD sel, LPLDT_ENTRY ldten
}
/**********************************************************************
* SMapLS* (KERNEL32)
* These functions map linear pointers at [EBP+xxx] to segmented pointers
* and return them.
* Win95 uses some kind of alias structs, which it stores in [EBP+x] to
* unravel them at SUnMapLS. We just store the segmented pointer there.
*/
static
void
x_SMapLS_IP_EBP_x
(
CONTEXT86
*
context
,
int
argoff
)
{
DWORD
val
,
ptr
;
val
=*
(
DWORD
*
)(
context
->
Ebp
+
argoff
);
if
(
val
<
0x10000
)
{
ptr
=
val
;
*
(
DWORD
*
)(
context
->
Ebp
+
argoff
)
=
0
;
}
else
{
ptr
=
MapLS
((
LPVOID
)
val
);
*
(
DWORD
*
)(
context
->
Ebp
+
argoff
)
=
ptr
;
}
context
->
Eax
=
ptr
;
}
/***********************************************************************
* SMapLS_IP_EBP_8 (KERNEL32.@)
*/
void
SMapLS_IP_EBP_8
(
CONTEXT86
*
context
)
{
x_SMapLS_IP_EBP_x
(
context
,
8
);}
/***********************************************************************
* SMapLS_IP_EBP_12 (KERNEL32.@)
*/
void
SMapLS_IP_EBP_12
(
CONTEXT86
*
context
)
{
x_SMapLS_IP_EBP_x
(
context
,
12
);}
/***********************************************************************
* SMapLS_IP_EBP_16 (KERNEL32.@)
*/
void
SMapLS_IP_EBP_16
(
CONTEXT86
*
context
)
{
x_SMapLS_IP_EBP_x
(
context
,
16
);}
/***********************************************************************
* SMapLS_IP_EBP_20 (KERNEL32.@)
*/
void
SMapLS_IP_EBP_20
(
CONTEXT86
*
context
)
{
x_SMapLS_IP_EBP_x
(
context
,
20
);}
/***********************************************************************
* SMapLS_IP_EBP_24 (KERNEL32.@)
*/
void
SMapLS_IP_EBP_24
(
CONTEXT86
*
context
)
{
x_SMapLS_IP_EBP_x
(
context
,
24
);}
/***********************************************************************
* SMapLS_IP_EBP_28 (KERNEL32.@)
*/
void
SMapLS_IP_EBP_28
(
CONTEXT86
*
context
)
{
x_SMapLS_IP_EBP_x
(
context
,
28
);}
/***********************************************************************
* SMapLS_IP_EBP_32 (KERNEL32.@)
*/
void
SMapLS_IP_EBP_32
(
CONTEXT86
*
context
)
{
x_SMapLS_IP_EBP_x
(
context
,
32
);}
/***********************************************************************
* SMapLS_IP_EBP_36 (KERNEL32.@)
*/
void
SMapLS_IP_EBP_36
(
CONTEXT86
*
context
)
{
x_SMapLS_IP_EBP_x
(
context
,
36
);}
/***********************************************************************
* SMapLS_IP_EBP_40 (KERNEL32.@)
*/
void
SMapLS_IP_EBP_40
(
CONTEXT86
*
context
)
{
x_SMapLS_IP_EBP_x
(
context
,
40
);}
#ifdef DEFINE_REGS_ENTRYPOINT
/***********************************************************************
* SMapLS (KERNEL32.@)
*/
void
SMapLS
(
CONTEXT86
*
context
)
void
WINAPI
__regs_
SMapLS
(
CONTEXT86
*
context
)
{
if
(
HIWORD
(
context
->
Eax
))
{
...
...
@@ -717,67 +654,87 @@ void SMapLS( CONTEXT86 *context )
context
->
Edx
=
0
;
}
}
DEFINE_REGS_ENTRYPOINT
(
SMapLS
,
0
,
0
);
/***********************************************************************
* SUnMapLS (KERNEL32.@)
*/
void
SUnMapLS
(
CONTEXT86
*
context
)
void
WINAPI
__regs_SUnMapLS
(
CONTEXT86
*
context
)
{
if
(
HIWORD
(
context
->
Eax
))
UnMapLS
(
(
SEGPTR
)
context
->
Eax
);
}
DEFINE_REGS_ENTRYPOINT
(
SUnMapLS
,
0
,
0
);
inline
static
void
x_SUnMapLS_IP_EBP_x
(
CONTEXT86
*
context
,
int
argoff
)
{
SEGPTR
*
ptr
=
(
SEGPTR
*
)(
context
->
Ebp
+
argoff
);
if
(
*
ptr
)
{
UnMapLS
(
*
ptr
);
*
ptr
=
0
;
}
}
/***********************************************************************
* SUnMapLS_IP_EBP_8 (KERNEL32.@)
* SMapLS_IP_EBP_8 (KERNEL32.@)
* SMapLS_IP_EBP_12 (KERNEL32.@)
* SMapLS_IP_EBP_16 (KERNEL32.@)
* SMapLS_IP_EBP_20 (KERNEL32.@)
* SMapLS_IP_EBP_24 (KERNEL32.@)
* SMapLS_IP_EBP_28 (KERNEL32.@)
* SMapLS_IP_EBP_32 (KERNEL32.@)
* SMapLS_IP_EBP_36 (KERNEL32.@)
* SMapLS_IP_EBP_40 (KERNEL32.@)
*
* These functions map linear pointers at [EBP+xxx] to segmented pointers
* and return them.
* Win95 uses some kind of alias structs, which it stores in [EBP+x] to
* unravel them at SUnMapLS. We just store the segmented pointer there.
*/
void
SUnMapLS_IP_EBP_8
(
CONTEXT86
*
context
)
{
x_SUnMapLS_IP_EBP_x
(
context
,
8
);
}
#define DEFINE_SMapLS(n) \
void WINAPI __regs_SMapLS_IP_EBP_ ## n (CONTEXT86 *context) \
{ \
SEGPTR *ptr = (SEGPTR *)(context->Ebp + n); \
if (!HIWORD(*ptr)) \
{ \
context->Eax = *ptr; \
*ptr = 0; \
} \
else *ptr = context->Eax = MapLS((LPVOID)*ptr); \
} \
DEFINE_REGS_ENTRYPOINT( SMapLS_IP_EBP_ ## n, 0, 0 )
DEFINE_SMapLS
(
8
);
DEFINE_SMapLS
(
12
);
DEFINE_SMapLS
(
16
);
DEFINE_SMapLS
(
20
);
DEFINE_SMapLS
(
24
);
DEFINE_SMapLS
(
28
);
DEFINE_SMapLS
(
32
);
DEFINE_SMapLS
(
36
);
DEFINE_SMapLS
(
40
);
/***********************************************************************
* SUnMapLS_IP_EBP_12 (KERNEL32.@)
*/
void
SUnMapLS_IP_EBP_12
(
CONTEXT86
*
context
)
{
x_SUnMapLS_IP_EBP_x
(
context
,
12
);
}
/***********************************************************************
* SUnMapLS_IP_EBP_8 (KERNEL32.@)
* SUnMapLS_IP_EBP_12 (KERNEL32.@)
* SUnMapLS_IP_EBP_16 (KERNEL32.@)
*/
void
SUnMapLS_IP_EBP_16
(
CONTEXT86
*
context
)
{
x_SUnMapLS_IP_EBP_x
(
context
,
16
);
}
/***********************************************************************
* SUnMapLS_IP_EBP_20 (KERNEL32.@)
*/
void
SUnMapLS_IP_EBP_20
(
CONTEXT86
*
context
)
{
x_SUnMapLS_IP_EBP_x
(
context
,
20
);
}
/***********************************************************************
* SUnMapLS_IP_EBP_24 (KERNEL32.@)
*/
void
SUnMapLS_IP_EBP_24
(
CONTEXT86
*
context
)
{
x_SUnMapLS_IP_EBP_x
(
context
,
24
);
}
/***********************************************************************
* SUnMapLS_IP_EBP_28 (KERNEL32.@)
*/
void
SUnMapLS_IP_EBP_28
(
CONTEXT86
*
context
)
{
x_SUnMapLS_IP_EBP_x
(
context
,
28
);
}
/***********************************************************************
* SUnMapLS_IP_EBP_32 (KERNEL32.@)
*/
void
SUnMapLS_IP_EBP_32
(
CONTEXT86
*
context
)
{
x_SUnMapLS_IP_EBP_x
(
context
,
32
);
}
/***********************************************************************
* SUnMapLS_IP_EBP_36 (KERNEL32.@)
*/
void
SUnMapLS_IP_EBP_36
(
CONTEXT86
*
context
)
{
x_SUnMapLS_IP_EBP_x
(
context
,
36
);
}
/***********************************************************************
* SUnMapLS_IP_EBP_40 (KERNEL32.@)
*/
void
SUnMapLS_IP_EBP_40
(
CONTEXT86
*
context
)
{
x_SUnMapLS_IP_EBP_x
(
context
,
40
);
}
#define DEFINE_SUnMapLS(n) \
void WINAPI __regs_SUnMapLS_IP_EBP_ ## n (CONTEXT86 *context) \
{ \
SEGPTR *ptr = (SEGPTR *)(context->Ebp + n); \
UnMapLS( *ptr ); \
*ptr = 0; \
} \
DEFINE_REGS_ENTRYPOINT( SUnMapLS_IP_EBP_ ## n, 0, 0 )
DEFINE_SUnMapLS
(
8
);
DEFINE_SUnMapLS
(
12
);
DEFINE_SUnMapLS
(
16
);
DEFINE_SUnMapLS
(
20
);
DEFINE_SUnMapLS
(
24
);
DEFINE_SUnMapLS
(
28
);
DEFINE_SUnMapLS
(
32
);
DEFINE_SUnMapLS
(
36
);
DEFINE_SUnMapLS
(
40
);
#endif
/* DEFINE_REGS_ENTRYPOINT */
dlls/kernel/thunk.c
View file @
2c7a2480
This diff is collapsed.
Click to expand it.
dlls/kernel/vxd.c
View file @
2c7a2480
...
...
@@ -278,7 +278,7 @@ done:
* VxDCall7 (KERNEL32.8)
* VxDCall8 (KERNEL32.9)
*/
void
VxDCall
(
DWORD
service
,
CONTEXT86
*
context
)
void
WINAPI
__regs_
VxDCall
(
DWORD
service
,
CONTEXT86
*
context
)
{
int
i
;
VxDCallProc
proc
=
NULL
;
...
...
@@ -304,6 +304,9 @@ void VxDCall( DWORD service, CONTEXT86 *context )
context
->
Eax
=
0xffffffff
;
/* FIXME */
}
}
#ifdef DEFINE_REGS_ENTRYPOINT
DEFINE_REGS_ENTRYPOINT
(
VxDCall
,
4
,
4
);
#endif
/***********************************************************************
...
...
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