Converted all the kernel32 register functions to the
DEFINE_REGS_ENTRYPOINT mechanism.
This commit is contained in:
parent
84e00d4804
commit
2c7a248055
|
@ -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.@)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 );
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
* 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.
|
||||
*/
|
||||
#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);
|
||||
|
||||
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.@)
|
||||
*/
|
||||
void SUnMapLS_IP_EBP_8 (CONTEXT86 *context) { x_SUnMapLS_IP_EBP_x(context, 8); }
|
||||
|
||||
/***********************************************************************
|
||||
* SUnMapLS_IP_EBP_12 (KERNEL32.@)
|
||||
*/
|
||||
void SUnMapLS_IP_EBP_12(CONTEXT86 *context) { x_SUnMapLS_IP_EBP_x(context,12); }
|
||||
|
||||
/***********************************************************************
|
||||
* 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 */
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "wine/port.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <sys/types.h>
|
||||
|
@ -185,30 +186,39 @@ void WINAPI LogApiThk( LPSTR func )
|
|||
*
|
||||
* NOTE: needs to preserve all registers!
|
||||
*/
|
||||
void LogApiThkLSF( LPSTR func, CONTEXT86 *context )
|
||||
void WINAPI __regs_LogApiThkLSF( LPSTR func, CONTEXT86 *context )
|
||||
{
|
||||
TRACE( "%s\n", debugstr_a(func) );
|
||||
}
|
||||
#ifdef DEFINE_REGS_ENTRYPOINT
|
||||
DEFINE_REGS_ENTRYPOINT( LogApiThkLSF, 4, 4 );
|
||||
#endif
|
||||
|
||||
/***********************************************************************
|
||||
* LogApiThkSL (KERNEL32.44)
|
||||
*
|
||||
* NOTE: needs to preserve all registers!
|
||||
*/
|
||||
void LogApiThkSL( LPSTR func, CONTEXT86 *context )
|
||||
void WINAPI __regs_LogApiThkSL( LPSTR func, CONTEXT86 *context )
|
||||
{
|
||||
TRACE( "%s\n", debugstr_a(func) );
|
||||
}
|
||||
#ifdef DEFINE_REGS_ENTRYPOINT
|
||||
DEFINE_REGS_ENTRYPOINT( LogApiThkSL, 4, 4 );
|
||||
#endif
|
||||
|
||||
/***********************************************************************
|
||||
* LogCBThkSL (KERNEL32.47)
|
||||
*
|
||||
* NOTE: needs to preserve all registers!
|
||||
*/
|
||||
void LogCBThkSL( LPSTR func, CONTEXT86 *context )
|
||||
void WINAPI __regs_LogCBThkSL( LPSTR func, CONTEXT86 *context )
|
||||
{
|
||||
TRACE( "%s\n", debugstr_a(func) );
|
||||
}
|
||||
#ifdef DEFINE_REGS_ENTRYPOINT
|
||||
DEFINE_REGS_ENTRYPOINT( LogCBThkSL, 4, 4 );
|
||||
#endif
|
||||
|
||||
/***********************************************************************
|
||||
* Generates a FT_Prolog call.
|
||||
|
@ -438,7 +448,7 @@ UINT WINAPI ThunkConnect32(
|
|||
* FIXME: DDJ talks of certain register usage rules; I'm not sure
|
||||
* whether we cover this 100%.
|
||||
*/
|
||||
void QT_Thunk( CONTEXT86 *context )
|
||||
void WINAPI __regs_QT_Thunk( CONTEXT86 *context )
|
||||
{
|
||||
CONTEXT86 context16;
|
||||
DWORD argsize;
|
||||
|
@ -476,6 +486,9 @@ void QT_Thunk( CONTEXT86 *context )
|
|||
context->Esp += LOWORD(context16.Esp) -
|
||||
( OFFSETOF( NtCurrentTeb()->cur_stack ) - argsize );
|
||||
}
|
||||
#ifdef DEFINE_REGS_ENTRYPOINT
|
||||
DEFINE_REGS_ENTRYPOINT( QT_Thunk, 0, 0 );
|
||||
#endif
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
|
@ -521,7 +534,7 @@ void QT_Thunk( CONTEXT86 *context )
|
|||
* ESP is EBP-64 after return.
|
||||
*
|
||||
*/
|
||||
void FT_Prolog( CONTEXT86 *context )
|
||||
void WINAPI __regs_FT_Prolog( CONTEXT86 *context )
|
||||
{
|
||||
/* Build stack frame */
|
||||
stack32_push(context, context->Ebp);
|
||||
|
@ -541,6 +554,9 @@ void FT_Prolog( CONTEXT86 *context )
|
|||
*(DWORD *)(context->Ebp - 48) = context->Eax;
|
||||
*(DWORD *)(context->Ebp - 52) = context->Edx;
|
||||
}
|
||||
#ifdef DEFINE_REGS_ENTRYPOINT
|
||||
DEFINE_REGS_ENTRYPOINT( FT_Prolog, 0, 0 );
|
||||
#endif
|
||||
|
||||
/**********************************************************************
|
||||
* FT_Thunk (KERNEL32.@)
|
||||
|
@ -562,7 +578,7 @@ void FT_Prolog( CONTEXT86 *context )
|
|||
* of arguments, so that the single DWORD bitmap is no longer
|
||||
* sufficient ...
|
||||
*/
|
||||
void FT_Thunk( CONTEXT86 *context )
|
||||
void WINAPI __regs_FT_Thunk( CONTEXT86 *context )
|
||||
{
|
||||
DWORD mapESPrelative = *(DWORD *)(context->Ebp - 20);
|
||||
DWORD callTarget = *(DWORD *)(context->Ebp - 52);
|
||||
|
@ -607,9 +623,26 @@ void FT_Thunk( CONTEXT86 *context )
|
|||
/* Copy modified buffers back to 32-bit stack */
|
||||
memcpy( oldstack, newstack, argsize );
|
||||
}
|
||||
#ifdef DEFINE_REGS_ENTRYPOINT
|
||||
DEFINE_REGS_ENTRYPOINT( FT_Thunk, 0, 0 );
|
||||
#endif
|
||||
|
||||
/**********************************************************************
|
||||
* FT_ExitNN (KERNEL32.218 - 232)
|
||||
/***********************************************************************
|
||||
* FT_Exit0 (KERNEL32.@)
|
||||
* FT_Exit4 (KERNEL32.@)
|
||||
* FT_Exit8 (KERNEL32.@)
|
||||
* FT_Exit12 (KERNEL32.@)
|
||||
* FT_Exit16 (KERNEL32.@)
|
||||
* FT_Exit20 (KERNEL32.@)
|
||||
* FT_Exit24 (KERNEL32.@)
|
||||
* FT_Exit28 (KERNEL32.@)
|
||||
* FT_Exit32 (KERNEL32.@)
|
||||
* FT_Exit36 (KERNEL32.@)
|
||||
* FT_Exit40 (KERNEL32.@)
|
||||
* FT_Exit44 (KERNEL32.@)
|
||||
* FT_Exit48 (KERNEL32.@)
|
||||
* FT_Exit52 (KERNEL32.@)
|
||||
* FT_Exit56 (KERNEL32.@)
|
||||
*
|
||||
* One of the FT_ExitNN functions is called at the end of the thunk code.
|
||||
* It removes the stack frame created by FT_Prolog, moves the function
|
||||
|
@ -619,7 +652,7 @@ void FT_Thunk( CONTEXT86 *context )
|
|||
* and perform a return to the CALLER of the thunk code (while removing
|
||||
* the given number of arguments from the caller's stack).
|
||||
*/
|
||||
static void FT_Exit(CONTEXT86 *context, int nPopArgs)
|
||||
static inline void FT_Exit(CONTEXT86 *context)
|
||||
{
|
||||
/* Return value is in EBX */
|
||||
context->Eax = context->Ebx;
|
||||
|
@ -635,84 +668,36 @@ static void FT_Exit(CONTEXT86 *context, int nPopArgs)
|
|||
|
||||
/* Pop return address to CALLER of thunk code */
|
||||
context->Eip = stack32_pop(context);
|
||||
/* Remove arguments */
|
||||
context->Esp += nPopArgs;
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* FT_Exit0 (KERNEL32.@)
|
||||
*/
|
||||
void FT_Exit0(CONTEXT86 *context) { FT_Exit(context, 0); }
|
||||
#ifdef DEFINE_REGS_ENTRYPOINT
|
||||
|
||||
/***********************************************************************
|
||||
* FT_Exit4 (KERNEL32.@)
|
||||
*/
|
||||
void FT_Exit4(CONTEXT86 *context) { FT_Exit(context, 4); }
|
||||
#define DEFINE_FT_Exit(n) \
|
||||
void WINAPI __regs_FT_Exit ## n(CONTEXT86 *context) \
|
||||
{ \
|
||||
FT_Exit(context); \
|
||||
context->Esp += n; \
|
||||
} \
|
||||
DEFINE_REGS_ENTRYPOINT( FT_Exit ## n, 0, 0 )
|
||||
|
||||
/***********************************************************************
|
||||
* FT_Exit8 (KERNEL32.@)
|
||||
*/
|
||||
void FT_Exit8(CONTEXT86 *context) { FT_Exit(context, 8); }
|
||||
DEFINE_FT_Exit(0);
|
||||
DEFINE_FT_Exit(4);
|
||||
DEFINE_FT_Exit(8);
|
||||
DEFINE_FT_Exit(12);
|
||||
DEFINE_FT_Exit(16);
|
||||
DEFINE_FT_Exit(20);
|
||||
DEFINE_FT_Exit(24);
|
||||
DEFINE_FT_Exit(28);
|
||||
DEFINE_FT_Exit(32);
|
||||
DEFINE_FT_Exit(36);
|
||||
DEFINE_FT_Exit(40);
|
||||
DEFINE_FT_Exit(44);
|
||||
DEFINE_FT_Exit(48);
|
||||
DEFINE_FT_Exit(52);
|
||||
DEFINE_FT_Exit(56);
|
||||
|
||||
/***********************************************************************
|
||||
* FT_Exit12 (KERNEL32.@)
|
||||
*/
|
||||
void FT_Exit12(CONTEXT86 *context) { FT_Exit(context, 12); }
|
||||
#endif /* DEFINE_REGS_ENTRYPOINT */
|
||||
|
||||
/***********************************************************************
|
||||
* FT_Exit16 (KERNEL32.@)
|
||||
*/
|
||||
void FT_Exit16(CONTEXT86 *context) { FT_Exit(context, 16); }
|
||||
|
||||
/***********************************************************************
|
||||
* FT_Exit20 (KERNEL32.@)
|
||||
*/
|
||||
void FT_Exit20(CONTEXT86 *context) { FT_Exit(context, 20); }
|
||||
|
||||
/***********************************************************************
|
||||
* FT_Exit24 (KERNEL32.@)
|
||||
*/
|
||||
void FT_Exit24(CONTEXT86 *context) { FT_Exit(context, 24); }
|
||||
|
||||
/***********************************************************************
|
||||
* FT_Exit28 (KERNEL32.@)
|
||||
*/
|
||||
void FT_Exit28(CONTEXT86 *context) { FT_Exit(context, 28); }
|
||||
|
||||
/***********************************************************************
|
||||
* FT_Exit32 (KERNEL32.@)
|
||||
*/
|
||||
void FT_Exit32(CONTEXT86 *context) { FT_Exit(context, 32); }
|
||||
|
||||
/***********************************************************************
|
||||
* FT_Exit36 (KERNEL32.@)
|
||||
*/
|
||||
void FT_Exit36(CONTEXT86 *context) { FT_Exit(context, 36); }
|
||||
|
||||
/***********************************************************************
|
||||
* FT_Exit40 (KERNEL32.@)
|
||||
*/
|
||||
void FT_Exit40(CONTEXT86 *context) { FT_Exit(context, 40); }
|
||||
|
||||
/***********************************************************************
|
||||
* FT_Exit44 (KERNEL32.@)
|
||||
*/
|
||||
void FT_Exit44(CONTEXT86 *context) { FT_Exit(context, 44); }
|
||||
|
||||
/***********************************************************************
|
||||
* FT_Exit48 (KERNEL32.@)
|
||||
*/
|
||||
void FT_Exit48(CONTEXT86 *context) { FT_Exit(context, 48); }
|
||||
|
||||
/***********************************************************************
|
||||
* FT_Exit52 (KERNEL32.@)
|
||||
*/
|
||||
void FT_Exit52(CONTEXT86 *context) { FT_Exit(context, 52); }
|
||||
|
||||
/***********************************************************************
|
||||
* FT_Exit56 (KERNEL32.@)
|
||||
*/
|
||||
void FT_Exit56(CONTEXT86 *context) { FT_Exit(context, 56); }
|
||||
|
||||
/***********************************************************************
|
||||
* ThunkInitLS (KERNEL32.43)
|
||||
|
@ -780,7 +765,7 @@ DWORD WINAPI ThunkInitLS(
|
|||
* in the BL register by the called 16-bit routine.
|
||||
*
|
||||
*/
|
||||
void Common32ThkLS( CONTEXT86 *context )
|
||||
void WINAPI __regs_Common32ThkLS( CONTEXT86 *context )
|
||||
{
|
||||
CONTEXT86 context16;
|
||||
DWORD argsize;
|
||||
|
@ -811,6 +796,9 @@ void Common32ThkLS( CONTEXT86 *context )
|
|||
/* Clean up caller's stack frame */
|
||||
context->Esp += LOBYTE(context16.Ebx);
|
||||
}
|
||||
#ifdef DEFINE_REGS_ENTRYPOINT
|
||||
DEFINE_REGS_ENTRYPOINT( Common32ThkLS, 0, 0 );
|
||||
#endif
|
||||
|
||||
/***********************************************************************
|
||||
* OT_32ThkLSF (KERNEL32.40)
|
||||
|
@ -839,7 +827,7 @@ void Common32ThkLS( CONTEXT86 *context )
|
|||
* (Note that this function seems only to be used for
|
||||
* OLECLI32 -> OLECLI and OLESVR32 -> OLESVR thunking.)
|
||||
*/
|
||||
void OT_32ThkLSF( CONTEXT86 *context )
|
||||
void WINAPI __regs_OT_32ThkLSF( CONTEXT86 *context )
|
||||
{
|
||||
CONTEXT86 context16;
|
||||
DWORD argsize;
|
||||
|
@ -866,6 +854,9 @@ void OT_32ThkLSF( CONTEXT86 *context )
|
|||
context->Esp += LOWORD(context16.Esp) -
|
||||
( OFFSETOF( NtCurrentTeb()->cur_stack ) - argsize );
|
||||
}
|
||||
#ifdef DEFINE_REGS_ENTRYPOINT
|
||||
DEFINE_REGS_ENTRYPOINT( OT_32ThkLSF, 0, 0 );
|
||||
#endif
|
||||
|
||||
/***********************************************************************
|
||||
* ThunkInitLSF (KERNEL32.41)
|
||||
|
@ -948,7 +939,7 @@ LPVOID WINAPI ThunkInitLSF(
|
|||
* Note: The two DWORD arguments get popped off the stack.
|
||||
*
|
||||
*/
|
||||
void FT_PrologPrime( CONTEXT86 *context )
|
||||
void WINAPI __regs_FT_PrologPrime( CONTEXT86 *context )
|
||||
{
|
||||
DWORD targetTableOffset;
|
||||
LPBYTE relayCode;
|
||||
|
@ -965,6 +956,9 @@ void FT_PrologPrime( CONTEXT86 *context )
|
|||
/* Jump to the call stub just created */
|
||||
context->Eip = (DWORD)relayCode;
|
||||
}
|
||||
#ifdef DEFINE_REGS_ENTRYPOINT
|
||||
DEFINE_REGS_ENTRYPOINT( FT_PrologPrime, 0, 0 );
|
||||
#endif
|
||||
|
||||
/***********************************************************************
|
||||
* QT_ThunkPrime (KERNEL32.90)
|
||||
|
@ -977,7 +971,7 @@ void FT_PrologPrime( CONTEXT86 *context )
|
|||
* EAX start of relay code
|
||||
*
|
||||
*/
|
||||
void QT_ThunkPrime( CONTEXT86 *context )
|
||||
void WINAPI __regs_QT_ThunkPrime( CONTEXT86 *context )
|
||||
{
|
||||
DWORD targetTableOffset;
|
||||
LPBYTE relayCode;
|
||||
|
@ -994,6 +988,9 @@ void QT_ThunkPrime( CONTEXT86 *context )
|
|||
/* Jump to the call stub just created */
|
||||
context->Eip = (DWORD)relayCode;
|
||||
}
|
||||
#ifdef DEFINE_REGS_ENTRYPOINT
|
||||
DEFINE_REGS_ENTRYPOINT( QT_ThunkPrime, 0, 0 );
|
||||
#endif
|
||||
|
||||
/***********************************************************************
|
||||
* ThunkInitSL (KERNEL32.46)
|
||||
|
@ -1118,7 +1115,7 @@ DWORD WINAPIV SSCall(
|
|||
/**********************************************************************
|
||||
* W32S_BackTo32 (KERNEL32.51)
|
||||
*/
|
||||
void W32S_BackTo32( CONTEXT86 *context )
|
||||
void WINAPI __regs_W32S_BackTo32( CONTEXT86 *context )
|
||||
{
|
||||
LPDWORD stack = (LPDWORD)context->Esp;
|
||||
FARPROC proc = (FARPROC)context->Eip;
|
||||
|
@ -1128,6 +1125,9 @@ void W32S_BackTo32( CONTEXT86 *context )
|
|||
|
||||
context->Eip = stack32_pop(context);
|
||||
}
|
||||
#ifdef DEFINE_REGS_ENTRYPOINT
|
||||
DEFINE_REGS_ENTRYPOINT( W32S_BackTo32, 0, 0 );
|
||||
#endif
|
||||
|
||||
/**********************************************************************
|
||||
* AllocSLCallback (KERNEL32.@)
|
||||
|
@ -1241,7 +1241,7 @@ BOOL16 WINAPI IsPeFormat16(
|
|||
/***********************************************************************
|
||||
* K32Thk1632Prolog (KERNEL32.@)
|
||||
*/
|
||||
void K32Thk1632Prolog( CONTEXT86 *context )
|
||||
void WINAPI __regs_K32Thk1632Prolog( CONTEXT86 *context )
|
||||
{
|
||||
LPBYTE code = (LPBYTE)context->Eip - 5;
|
||||
|
||||
|
@ -1298,11 +1298,14 @@ void K32Thk1632Prolog( CONTEXT86 *context )
|
|||
been called. Thus we re-use it to hold the Win16Lock count */
|
||||
ReleaseThunkLock(&CURRENT_STACK16->entry_point);
|
||||
}
|
||||
#ifdef DEFINE_REGS_ENTRYPOINT
|
||||
DEFINE_REGS_ENTRYPOINT( K32Thk1632Prolog, 0, 0 );
|
||||
#endif
|
||||
|
||||
/***********************************************************************
|
||||
* K32Thk1632Epilog (KERNEL32.@)
|
||||
*/
|
||||
void K32Thk1632Epilog( CONTEXT86 *context )
|
||||
void WINAPI __regs_K32Thk1632Epilog( CONTEXT86 *context )
|
||||
{
|
||||
LPBYTE code = (LPBYTE)context->Eip - 13;
|
||||
|
||||
|
@ -1332,6 +1335,9 @@ void K32Thk1632Epilog( CONTEXT86 *context )
|
|||
context->Ebp, context->Esp, NtCurrentTeb()->cur_stack);
|
||||
}
|
||||
}
|
||||
#ifdef DEFINE_REGS_ENTRYPOINT
|
||||
DEFINE_REGS_ENTRYPOINT( K32Thk1632Epilog, 0, 0 );
|
||||
#endif
|
||||
|
||||
/*********************************************************************
|
||||
* PK16FNF [KERNEL32.91]
|
||||
|
@ -2101,7 +2107,7 @@ LPVOID WINAPI GetPK16SysVar(void)
|
|||
/**********************************************************************
|
||||
* CommonUnimpStub (KERNEL32.17)
|
||||
*/
|
||||
void CommonUnimpStub( CONTEXT86 *context )
|
||||
void WINAPI __regs_CommonUnimpStub( CONTEXT86 *context )
|
||||
{
|
||||
FIXME("generic stub: %s\n", ((LPSTR)context->Eax ? (LPSTR)context->Eax : "?"));
|
||||
|
||||
|
@ -2116,6 +2122,9 @@ void CommonUnimpStub( CONTEXT86 *context )
|
|||
|
||||
context->Esp += (context->Ecx & 0x0f) * 4;
|
||||
}
|
||||
#ifdef DEFINE_REGS_ENTRYPOINT
|
||||
DEFINE_REGS_ENTRYPOINT( CommonUnimpStub, 0, 0 );
|
||||
#endif
|
||||
|
||||
/**********************************************************************
|
||||
* HouseCleanLogicallyDeadHandles (KERNEL32.33)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
|
|
Loading…
Reference in New Issue