Commit c3d9f281 authored by Ulrich Weigand's avatar Ulrich Weigand Committed by Alexandre Julliard

Moved implementation of WOW routines to single file.

Added all missing WOW routines, fixed WOWCallback16Ex.
parent 16b901c5
......@@ -417,12 +417,12 @@ file krnl386.exe
509 stub WOWKILLREMOTETASK
511 stub WOWKILLREMOTETASK
512 stub WOWQUERYDEBUG
513 pascal LoadLibraryEx32W(ptr long long) LoadLibraryEx32W16 # Both NT/95
514 pascal16 FreeLibrary32W(long) FreeLibrary # Both NT/95
515 pascal GetProcAddress32W(long str) GetProcAddress # Both NT/95
516 pascal GetVDMPointer32W(segptr word) GetVDMPointer32W # Both NT/95
517 pascal CallProc32W() CallProc32W_16 # Both NT/95
518 pascal CallProcEx32W() CallProcEx32W_16 # Both NT/95
513 pascal LoadLibraryEx32W(ptr long long) LoadLibraryEx32W16 # Both NT/95
514 pascal FreeLibrary32W(long) FreeLibrary32W16 # Both NT/95
515 pascal GetProcAddress32W(long str) GetProcAddress32W16 # Both NT/95
516 pascal GetVDMPointer32W(segptr word) GetVDMPointer32W16 # Both NT/95
517 pascal CallProc32W() CallProc32W16 # Both NT/95
518 pascal CallProcEx32W() CallProcEx32W16 # Both NT/95
519 stub EXITKERNELTHUNK
# the __MOD_ variables are WORD datareferences, the current values are invented.
520 equate __MOD_KERNEL 4200
......
......@@ -394,112 +394,3 @@ void WINAPI Throw16( LPCATCHBUF lpbuf, INT16 retval, CONTEXT86 *context )
ERR("Switching stack segment with Throw() not supported; expect crash now\n" );
}
/**********************************************************************
* RELAY_CallProc32W
*
* Helper for CallProc[Ex]32W
*/
static DWORD RELAY_CallProc32W(int Ex)
{
DWORD nrofargs, argconvmask;
FARPROC proc32;
DWORD *args, ret;
VA_LIST16 valist;
int i;
int aix;
SYSLEVEL_ReleaseWin16Lock();
VA_START16( valist );
nrofargs = VA_ARG16( valist, DWORD );
argconvmask = VA_ARG16( valist, DWORD );
proc32 = VA_ARG16( valist, FARPROC );
TRACE("CallProc32W(%ld,%ld,%p, Ex%d args[",nrofargs,argconvmask,proc32,Ex);
args = (DWORD*)HEAP_xalloc( GetProcessHeap(), 0,
sizeof(DWORD)*nrofargs );
/* CallProcEx doesn't need its args reversed */
for (i=0;i<nrofargs;i++) {
if (Ex) {
aix = i;
} else {
aix = nrofargs - i - 1;
}
if (argconvmask & (1<<i))
{
SEGPTR ptr = VA_ARG16( valist, SEGPTR );
args[aix] = (DWORD)PTR_SEG_TO_LIN(ptr);
if (TRACE_ON(relay)) DPRINTF("%08lx(%p),",ptr,PTR_SEG_TO_LIN(ptr));
}
else
{
args[aix] = VA_ARG16( valist, DWORD );
if (TRACE_ON(relay)) DPRINTF("%ld,",args[aix]);
}
}
if (TRACE_ON(relay)) DPRINTF("])\n");
VA_END16( valist );
if (!proc32) ret = 0;
else switch (nrofargs)
{
case 0: ret = proc32();
break;
case 1: ret = proc32(args[0]);
break;
case 2: ret = proc32(args[0],args[1]);
break;
case 3: ret = proc32(args[0],args[1],args[2]);
break;
case 4: ret = proc32(args[0],args[1],args[2],args[3]);
break;
case 5: ret = proc32(args[0],args[1],args[2],args[3],args[4]);
break;
case 6: ret = proc32(args[0],args[1],args[2],args[3],args[4],args[5]);
break;
case 7: ret = proc32(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);
break;
case 8: ret = proc32(args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7]);
break;
case 9: ret = proc32(args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8]);
break;
case 10: ret = proc32(args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9]);
break;
case 11: ret = proc32(args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10]);
break;
default:
/* FIXME: should go up to 32 arguments */
ERR("Unsupported number of arguments %ld, please report.\n",nrofargs);
ret = 0;
break;
}
/* POP nrofargs DWORD arguments and 3 DWORD parameters */
if (!Ex) stack16_pop( (3 + nrofargs) * sizeof(DWORD) );
TRACE("CallProc32W - returns %08lx\n",ret);
HeapFree( GetProcessHeap(), 0, args );
SYSLEVEL_RestoreWin16Lock();
return ret;
}
/**********************************************************************
* CallProc32W (KERNEL.517)
*/
DWORD WINAPI CallProc32W_16()
{
return RELAY_CallProc32W(0);
}
/**********************************************************************
* CallProcEx32W() (KERNEL.518)
*
* C - style linkage to CallProc32W - caller pops stack.
*/
DWORD WINAPI CallProcEx32W_16()
{
return RELAY_CallProc32W(TRUE);
}
......@@ -35,9 +35,6 @@ typedef struct
WORD (CALLBACK *CallLoadAppSegProc)( FARPROC16, HANDLE16, HFILE16, WORD );
WORD (CALLBACK *CallLocalNotifyFunc)( FARPROC16, WORD, HLOCAL16, WORD );
HGLOBAL16 (CALLBACK *CallResourceHandlerProc)( FARPROC16, HGLOBAL16, HMODULE16, HRSRC16 );
DWORD (CALLBACK *CallWOWCallbackProc)( FARPROC16, DWORD );
BOOL (CALLBACK *CallWOWCallback16Ex)( FARPROC16, DWORD, DWORD, LPVOID,
LPDWORD );
DWORD (CALLBACK *CallUTProc)( FARPROC16, DWORD, DWORD );
LRESULT (CALLBACK *CallASPIPostProc)( FARPROC16, SEGPTR );
/* Following are the graphics driver callbacks */
......
......@@ -863,30 +863,6 @@ typedef struct _LDT_ENTRY {
} HighWord;
} LDT_ENTRY, *LPLDT_ENTRY;
/* for WOWHandle{16,32} */
typedef enum _WOW_HANDLE_TYPE { /* WOW */
WOW_TYPE_HWND,
WOW_TYPE_HMENU,
WOW_TYPE_HDWP,
WOW_TYPE_HDROP,
WOW_TYPE_HDC,
WOW_TYPE_HFONT,
WOW_TYPE_HMETAFILE,
WOW_TYPE_HRGN,
WOW_TYPE_HBITMAP,
WOW_TYPE_HBRUSH,
WOW_TYPE_HPALETTE,
WOW_TYPE_HPEN,
WOW_TYPE_HACCEL,
WOW_TYPE_HTASK,
WOW_TYPE_FULLHWND
} WOW_HANDLE_TYPE;
/* WOWCallback16Ex defines */
#define WCB16_MAX_CBARGS 16
/* ... dwFlags */
#define WCB16_PASCAL 0x0
#define WCB16_CDECL 0x1
typedef enum _GET_FILEEX_INFO_LEVELS {
GetFileExInfoStandard
......@@ -1534,10 +1510,6 @@ DWORD WINAPI WaitForMultipleObjects(DWORD,const HANDLE*,BOOL,DWORD);
DWORD WINAPI WaitForMultipleObjectsEx(DWORD,const HANDLE*,BOOL,DWORD,BOOL);
DWORD WINAPI WaitForSingleObject(HANDLE,DWORD);
DWORD WINAPI WaitForSingleObjectEx(HANDLE,DWORD,BOOL);
SEGPTR WINAPI WOWGlobalAllocLock16(DWORD,DWORD,HGLOBAL16*);
DWORD WINAPI WOWCallback16(FARPROC16,DWORD);
BOOL WINAPI WOWCallback16Ex(FARPROC16,DWORD,DWORD,LPVOID,LPDWORD);
HANDLE WINAPI WOWHandle32(WORD,WOW_HANDLE_TYPE);
BOOL WINAPI WriteConsoleA(HANDLE,LPCVOID,DWORD,LPDWORD,LPVOID);
BOOL WINAPI WriteConsoleW(HANDLE,LPCVOID,DWORD,LPDWORD,LPVOID);
#define WriteConsole WINELIB_NAME_AW(WriteConsole)
......
......@@ -89,7 +89,6 @@ WORD WINAPI LocalCountFree16(void);
WORD WINAPI LocalHandleDelta16(WORD);
WORD WINAPI LocalHeapSize16(void);
BOOL16 WINAPI LocalInit16(HANDLE16,WORD,WORD);
HMODULE WINAPI LoadLibraryEx32W16(LPCSTR,HANDLE16,DWORD);
FARPROC16 WINAPI LocalNotify16(FARPROC16);
HTASK16 WINAPI LockCurrentTask16(BOOL16);
VOID WINAPI OldYield16(void);
......
/*
* WOW Generic Thunk API
*/
#ifndef _WOWNT32_H_
#define _WOWNT32_H_
LPVOID WINAPI WOWGetVDMPointer(DWORD,DWORD,BOOL);
LPVOID WINAPI WOWGetVDMPointerFix(DWORD,DWORD,BOOL);
VOID WINAPI WOWGetVDMPointerUnfix(DWORD);
WORD WINAPI WOWGlobalAlloc16(WORD,DWORD);
WORD WINAPI WOWGlobalFree16(WORD);
DWORD WINAPI WOWGlobalLock16(WORD);
BOOL WINAPI WOWGlobalUnlock16(WORD);
DWORD WINAPI WOWGlobalAllocLock16(WORD,DWORD,WORD *);
WORD WINAPI WOWGlobalUnlockFree16(DWORD);
DWORD WINAPI WOWGlobalLockSize16(WORD,PDWORD);
VOID WINAPI WOWYield16(VOID);
VOID WINAPI WOWDirectedYield16(WORD);
typedef enum
{
WOW_TYPE_HWND,
WOW_TYPE_HMENU,
WOW_TYPE_HDWP,
WOW_TYPE_HDROP,
WOW_TYPE_HDC,
WOW_TYPE_HFONT,
WOW_TYPE_HMETAFILE,
WOW_TYPE_HRGN,
WOW_TYPE_HBITMAP,
WOW_TYPE_HBRUSH,
WOW_TYPE_HPALETTE,
WOW_TYPE_HPEN,
WOW_TYPE_HACCEL,
WOW_TYPE_HTASK,
WOW_TYPE_FULLHWND
} WOW_HANDLE_TYPE;
HANDLE WINAPI WOWHandle32(WORD,WOW_HANDLE_TYPE);
WORD WINAPI WOWHandle16(HANDLE,WOW_HANDLE_TYPE);
#define HWND_32(h16) ((HWND) (WOWHandle32(h16, WOW_TYPE_HWND)))
#define HMENU_32(h16) ((HMENU) (WOWHandle32(h16, WOW_TYPE_HMENU)))
#define HDWP_32(h16) ((HDWP) (WOWHandle32(h16, WOW_TYPE_HDWP)))
#define HDROP_32(h16) ((HDROP) (WOWHandle32(h16, WOW_TYPE_HDROP)))
#define HDC_32(h16) ((HDC) (WOWHandle32(h16, WOW_TYPE_HDC)))
#define HFONT_32(h16) ((HFONT) (WOWHandle32(h16, WOW_TYPE_HFONT)))
#define HMETAFILE_32(h16) ((HMETAFILE) (WOWHandle32(h16, WOW_TYPE_HMETAFILE)))
#define HRGN_32(h16) ((HRGN) (WOWHandle32(h16, WOW_TYPE_HRGN)))
#define HBITMAP_32(h16) ((HBITMAP) (WOWHandle32(h16, WOW_TYPE_HBITMAP)))
#define HBRUSH_32(h16) ((HBRUSH) (WOWHandle32(h16, WOW_TYPE_HBRUSH)))
#define HPALETTE_32(h16) ((HPALETTE) (WOWHandle32(h16, WOW_TYPE_HPALETTE)))
#define HPEN_32(h16) ((HPEN) (WOWHandle32(h16, WOW_TYPE_HPEN)))
#define HACCEL_32(h16) ((HACCEL) (WOWHandle32(h16, WOW_TYPE_HACCEL)))
#define HTASK_32(h16) ((DWORD) (WOWHandle32(h16, WOW_TYPE_HTASK)))
#define FULLHWND_32(h16) ((HWND) (WOWHandle32(h16, WOW_TYPE_FULLHWND)))
#define HWND_16(h32) (WOWHandle16(h32, WOW_TYPE_HWND))
#define HMENU_16(h32) (WOWHandle16(h32, WOW_TYPE_HMENU))
#define HDWP_16(h32) (WOWHandle16(h32, WOW_TYPE_HDWP))
#define HDROP_16(h32) (WOWHandle16(h32, WOW_TYPE_HDROP))
#define HDC_16(h32) (WOWHandle16(h32, WOW_TYPE_HDC))
#define HFONT_16(h32) (WOWHandle16(h32, WOW_TYPE_HFONT))
#define HMETAFILE_16(h32) (WOWHandle16(h32, WOW_TYPE_HMETAFILE))
#define HRGN_16(h32) (WOWHandle16(h32, WOW_TYPE_HRGN))
#define HBITMAP_16(h32) (WOWHandle16(h32, WOW_TYPE_HBITMAP))
#define HBRUSH_16(h32) (WOWHandle16(h32, WOW_TYPE_HBRUSH))
#define HPALETTE_16(h32) (WOWHandle16(h32, WOW_TYPE_HPALETTE))
#define HPEN_16(h32) (WOWHandle16(h32, WOW_TYPE_HPEN))
#define HACCEL_16(h32) (WOWHandle16(h32, WOW_TYPE_HACCEL))
#define HTASK_16(h32) (WOWHandle16(h32, WOW_TYPE_HTASK))
#define WCB16_PASCAL 0
#define WCB16_CDECL 1
#define WCB16_MAX_CBARGS 16
DWORD WINAPI WOWCallback16(DWORD,DWORD);
BOOL WINAPI WOWCallback16Ex(DWORD,DWORD,DWORD,LPVOID,LPDWORD);
#ifdef __WINE__
/*
* These are the 16-bit side WOW routines. They reside in wownt16.h
* in the SDK; since we don't support Win16 source code anyway, I've
* placed them here for compilation with Wine ...
*/
DWORD WINAPI GetVDMPointer32W16(SEGPTR,UINT16);
DWORD WINAPI LoadLibraryEx32W16(LPCSTR,DWORD,DWORD);
DWORD WINAPI GetProcAddress32W16(DWORD,LPCSTR);
DWORD WINAPI FreeLibrary32W16(DWORD);
#define CPEX_DEST_STDCALL 0x00000000L
#define CPEX_DEST_CDECL 0x80000000L
DWORD WINAPI CallProcExW16(VOID);
DWORD WINAPI CallProcEx32W16(VOID);
#endif /* __WINE__ */
#endif /* _WOWNT32_H_ */
......@@ -1364,29 +1364,6 @@ DWORD WINAPI GetModuleFileNameW( HMODULE hModule, LPWSTR lpFileName,
/***********************************************************************
* LoadLibraryEx32W (KERNEL.513)
*/
HMODULE WINAPI LoadLibraryEx32W16( LPCSTR libname, HANDLE16 hf,
DWORD flags )
{
HMODULE hModule;
SYSLEVEL_ReleaseWin16Lock();
hModule = LoadLibraryExA( libname, hf, flags );
SYSLEVEL_RestoreWin16Lock();
return hModule;
}
/***********************************************************************
* LoadLibrary32_16 (KERNEL.452)
*/
HMODULE WINAPI LoadLibrary32_16( LPCSTR libname )
{
return LoadLibraryEx32W16( libname, 0, 0 );
}
/***********************************************************************
* LoadLibraryExA (KERNEL32)
*/
HMODULE WINAPI LoadLibraryExA(LPCSTR libname, HFILE hfile, DWORD flags)
......@@ -1524,6 +1501,20 @@ HMODULE WINAPI LoadLibraryW(LPCWSTR libnameW)
}
/***********************************************************************
* LoadLibrary32_16 (KERNEL.452)
*/
HMODULE WINAPI LoadLibrary32_16( LPCSTR libname )
{
HMODULE hModule;
SYSLEVEL_ReleaseWin16Lock();
hModule = LoadLibraryA( libname );
SYSLEVEL_RestoreWin16Lock();
return hModule;
}
/***********************************************************************
* LoadLibraryExW (KERNEL32)
*/
HMODULE WINAPI LoadLibraryExW(LPCWSTR libnameW,HFILE hfile,DWORD flags)
......
......@@ -1494,33 +1494,6 @@ VOID WINAPI GlobalMemoryStatus(
lpmem->dwAvailVirtual = 32*1024*1024;
}
/**********************************************************************
* WOWGlobalAllocLock (KERNEL32.62)
*
* Combined GlobalAlloc and GlobalLock.
*/
SEGPTR WINAPI WOWGlobalAllocLock16(DWORD flags,DWORD cb,HGLOBAL16 *hmem)
{
HGLOBAL16 xhmem;
xhmem = GlobalAlloc16(flags,cb);
if (hmem) *hmem = xhmem;
return WIN16_GlobalLock16(xhmem);
}
/**********************************************************************
* WOWGlobalUnlockFree (KERNEL32.64)
*
* Combined GlobalUnlock and GlobalFree.
*/
WORD WINAPI WOWGlobalUnlockFree16(DWORD vpmem) {
if (!GlobalUnlock16(HIWORD(vpmem)))
return 0;
return GlobalFree16(HIWORD(vpmem));
}
/***********************************************************************
* A20Proc16 (KERNEL.165)
*/
......
......@@ -770,44 +770,6 @@ void WINAPI REGS_FUNC(FreeMappedBuffer)( CONTEXT *context )
#endif
}
/**********************************************************************
* WOWGetVDMPointer (KERNEL32.55)
* Get linear from segmented pointer. (MSDN lib)
*/
LPVOID WINAPI WOWGetVDMPointer(DWORD vp,DWORD nrofbytes,BOOL protected)
{
/* FIXME: add size check too */
if (protected)
return PTR_SEG_TO_LIN(vp);
else
return DOSMEM_MapRealToLinear(vp);
}
/**********************************************************************
* GetVDMPointer32W (KERNEL.516)
*/
LPVOID WINAPI GetVDMPointer32W(DWORD vp,WORD mode)
{
return WOWGetVDMPointer(vp,0,(DWORD)mode);
}
/**********************************************************************
* WOWGetVDMPointerFix (KERNEL32.55)
* Dito, but fix heapsegment (MSDN lib)
*/
LPVOID WINAPI WOWGetVDMPointerFix(DWORD vp,DWORD nrofbytes,BOOL protected)
{
/* FIXME: fix heapsegment */
return WOWGetVDMPointer(vp,nrofbytes,protected);
}
/**********************************************************************
* WOWGetVDMPointerUnFix (KERNEL32.56)
*/
void WINAPI WOWGetVDMPointerUnfix(DWORD vp)
{
/* FIXME: unfix heapsegment */
}
/***********************************************************************
* UTSelectorOffsetToLinear (WIN32S16.48)
......
......@@ -32,7 +32,8 @@ C_SRCS = \
builtin32.c \
relay386.c \
snoop.c \
utthunk.c
utthunk.c \
wowthunk.c
GEN_ASM_SRCS = \
call32.s
......
......@@ -72,16 +72,16 @@ import ntdll.dll
55 stdcall K32WOWCallback16Ex(ptr long long ptr ptr) WOWCallback16Ex
56 stdcall K32WOWGetVDMPointer(long long long) WOWGetVDMPointer
57 stdcall K32WOWHandle32(long long) WOWHandle32
58 stub K32WOWHandle16
59 stdcall K32WOWGlobalAlloc16(long long) GlobalAlloc16
60 stdcall K32WOWGlobalLock16(long) WIN16_GlobalLock16
61 stdcall K32WOWGlobalUnlock16(long) GlobalUnlock16
62 stdcall K32WOWGlobalFree16(long) GlobalFree16
58 stdcall K32WOWHandle16(long long) WOWHandle16
59 stdcall K32WOWGlobalAlloc16(long long) WOWGlobalAlloc16
60 stdcall K32WOWGlobalLock16(long) WOWGlobalLock16
61 stdcall K32WOWGlobalUnlock16(long) WOWGlobalUnlock16
62 stdcall K32WOWGlobalFree16(long) WOWGlobalFree16
63 stdcall K32WOWGlobalAllocLock16(long long ptr) WOWGlobalAllocLock16
64 stdcall K32WOWGlobalUnlockFree16(long) WOWGlobalUnlockFree16
65 stub K32WOWGlobalLockSize16
66 stub K32WOWYield16
67 stub K32WOWDirectedYield16
65 stdcall K32WOWGlobalLockSize16(long ptr) WOWGlobalLockSize16
66 stdcall K32WOWYield16() WOWYield16
67 stdcall K32WOWDirectedYield16(long) WOWDirectedYield16
68 stdcall K32WOWGetVDMPointerFix(long long long) WOWGetVDMPointerFix
69 stdcall K32WOWGetVDMPointerUnfix(long) WOWGetVDMPointerUnfix
70 stdcall K32WOWGetDescriptor(long long) WOWGetDescriptor
......
......@@ -4,17 +4,17 @@ type win32
1 stdcall WOWGetDescriptor(long long) WOWGetDescriptor
2 stdcall WOWCallback16(long long) WOWCallback16
3 stdcall WOWCallback16Ex(ptr long long ptr ptr) WOWCallback16Ex
4 stub WOWDirectedYield16
4 stdcall WOWDirectedYield16(long) WOWDirectedYield16
5 stdcall WOWGetVDMPointer(long long long) WOWGetVDMPointer
6 stdcall WOWGetVDMPointerFix(long long long) WOWGetVDMPointerFix
7 stdcall WOWGetVDMPointerUnfix(long) WOWGetVDMPointerUnfix
8 stub WOWGlobalAlloc16
8 stdcall WOWGlobalAlloc16(long long) WOWGlobalAlloc16
9 stdcall WOWGlobalAllocLock16(long long ptr) WOWGlobalAllocLock16
10 stub WOWGlobalFree16
11 stub WOWGlobalLock16
12 stub WOWGlobalLockSize16
13 stub WOWGlobalUnlock16
10 stdcall WOWGlobalFree16(long) WOWGlobalFree16
11 stdcall WOWGlobalLock16(long) WOWGlobalLock16
12 stdcall WOWGlobalLockSize16(long ptr) WOWGlobalLockSize16
13 stdcall WOWGlobalUnlock16(long) WOWGlobalUnlock16
14 stdcall WOWGlobalUnlockFree16(long) WOWGlobalUnlockFree16
15 stub WOWHandle16
15 stdcall WOWHandle16(long long) WOWHandle16
16 stdcall WOWHandle32(long long) WOWHandle32
17 stub WOWYield16
17 stdcall WOWYield16() WOWYield16
......@@ -495,39 +495,6 @@ void WINAPI REGS_FUNC(FT_Exit52)(CONTEXT *context) { FT_Exit(context, 52); }
void WINAPI REGS_FUNC(FT_Exit56)(CONTEXT *context) { FT_Exit(context, 56); }
/**********************************************************************
* WOWCallback16 (KERNEL32.62)(WOW32.2)
* Calls a win16 function with a single DWORD argument.
* RETURNS
* the return value
*/
DWORD WINAPI WOWCallback16(
FARPROC16 fproc, /* [in] win16 function to call */
DWORD arg /* [in] single DWORD argument to function */
) {
DWORD ret;
TRACE_(thunk)("(%p,0x%08lx)...\n",fproc,arg);
ret = Callbacks->CallWOWCallbackProc(fproc,arg);
TRACE_(thunk)("... returns %ld\n",ret);
return ret;
}
/**********************************************************************
* WOWCallback16Ex (KERNEL32.55)(WOW32.3)
* Calls a function in 16bit code.
* RETURNS
* TRUE for success
*/
BOOL WINAPI WOWCallback16Ex(
FARPROC16 vpfn16, /* [in] win16 function to call */
DWORD dwFlags, /* [in] flags */
DWORD cbArgs, /* [in] nr of arguments */
LPVOID pArgs, /* [in] pointer to arguments (LPDWORD) */
LPDWORD pdwRetCode /* [out] return value of win16 function */
) {
return Callbacks->CallWOWCallback16Ex(vpfn16,dwFlags,cbArgs,pArgs,pdwRetCode);
}
/***********************************************************************
* ThunkInitLS (KERNEL32.43)
* A thunkbuffer link routine
......@@ -1064,21 +1031,6 @@ BOOL16 WINAPI IsPeFormat16(
return (xmagic == IMAGE_NT_SIGNATURE);
}
/***********************************************************************
* WOWHandle32 (KERNEL32.57)(WOW32.16)
* Converts a win16 handle of type into the respective win32 handle.
* We currently just return this handle, since most handles are the same
* for win16 and win32.
* RETURNS
* The new handle
*/
HANDLE WINAPI WOWHandle32(
WORD handle, /* [in] win16 handle */
WOW_HANDLE_TYPE type /* [in] handle type */
) {
TRACE_(win32)("(0x%04x,%d)\n",handle,type);
return (HANDLE)handle;
}
/***********************************************************************
* K32Thk1632Prolog (KERNEL32.492)
......
......@@ -22,13 +22,6 @@ DECLARE_DEBUG_CHANNEL(thread)
DECLARE_DEBUG_CHANNEL(win)
DECLARE_DEBUG_CHANNEL(win32)
/**********************************************************************
* WOWGetDescriptor (KERNEL32.88) (WOW32.1)
*/
BOOL WINAPI WOWGetDescriptor(SEGPTR segptr,LPLDT_ENTRY ldtent)
{
return GetThreadSelectorEntry(GetCurrentThreadId(),segptr>>16,ldtent);
}
/***********************************************************************
* GetWin16DOSEnv (KERNEL32.34)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment