From 475b7d226cc062524495268825c3028c2797174d Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Tue, 29 Dec 2009 16:24:00 +0100 Subject: [PATCH] kernel32: Make krnl386.exe into a stand-alone 16-bit module. --- .gitignore | 1 - configure | 9 + configure.ac | 1 + dlls/Makefile.in | 4 - dlls/kernel32/Makefile.in | 42 +- dlls/kernel32/file.c | 17 +- dlls/kernel32/kernel32.spec | 462 +++++++++--------- dlls/kernel32/kernel_main.c | 42 +- dlls/kernel32/kernel_private.h | 5 - dlls/kernel32/module.c | 25 + dlls/krnl386.exe16/Makefile.in | 42 ++ .../atom16.c => krnl386.exe16/atom.c} | 0 dlls/{kernel32 => krnl386.exe16}/dosmem.c | 0 .../error16.c => krnl386.exe16/error.c} | 0 .../file16.c => krnl386.exe16/file.c} | 0 .../global16.c => krnl386.exe16/global.c} | 0 dlls/{kernel32 => krnl386.exe16}/instr.c | 4 - .../kernel16.c => krnl386.exe16/kernel.c} | 51 ++ .../kernel16_private.h | 2 - .../krnl386.exe16.spec} | 204 ++++++++ .../local16.c => krnl386.exe16/local.c} | 0 dlls/{kernel32 => krnl386.exe16}/ne_module.c | 6 - dlls/{kernel32 => krnl386.exe16}/ne_segment.c | 0 .../registry16.c => krnl386.exe16/registry.c} | 0 .../relay16.c => krnl386.exe16/relay.c} | 0 .../resource16.c => krnl386.exe16/resource.c} | 0 dlls/{kernel32 => krnl386.exe16}/selector.c | 5 - .../snoop16.c => krnl386.exe16/snoop.c} | 12 - dlls/{kernel32 => krnl386.exe16}/syslevel.c | 2 - dlls/{kernel32 => krnl386.exe16}/task.c | 0 dlls/{kernel32 => krnl386.exe16}/thunk.c | 4 - dlls/{kernel32 => krnl386.exe16}/utthunk.c | 4 - .../version16.rc => krnl386.exe16/version.rc} | 0 dlls/{kernel32 => krnl386.exe16}/vxd.c | 10 +- dlls/{kernel32 => krnl386.exe16}/wowthunk.c | 17 - 35 files changed, 582 insertions(+), 389 deletions(-) create mode 100644 dlls/krnl386.exe16/Makefile.in rename dlls/{kernel32/atom16.c => krnl386.exe16/atom.c} (100%) rename dlls/{kernel32 => krnl386.exe16}/dosmem.c (100%) rename dlls/{kernel32/error16.c => krnl386.exe16/error.c} (100%) rename dlls/{kernel32/file16.c => krnl386.exe16/file.c} (100%) rename dlls/{kernel32/global16.c => krnl386.exe16/global.c} (100%) rename dlls/{kernel32 => krnl386.exe16}/instr.c (99%) rename dlls/{kernel32/kernel16.c => krnl386.exe16/kernel.c} (93%) rename dlls/{kernel32 => krnl386.exe16}/kernel16_private.h (99%) rename dlls/{kernel32/krnl386.exe.spec => krnl386.exe16/krnl386.exe16.spec} (72%) rename dlls/{kernel32/local16.c => krnl386.exe16/local.c} (100%) rename dlls/{kernel32 => krnl386.exe16}/ne_module.c (99%) rename dlls/{kernel32 => krnl386.exe16}/ne_segment.c (100%) rename dlls/{kernel32/registry16.c => krnl386.exe16/registry.c} (100%) rename dlls/{kernel32/relay16.c => krnl386.exe16/relay.c} (100%) rename dlls/{kernel32/resource16.c => krnl386.exe16/resource.c} (100%) rename dlls/{kernel32 => krnl386.exe16}/selector.c (99%) rename dlls/{kernel32/snoop16.c => krnl386.exe16/snoop.c} (97%) rename dlls/{kernel32 => krnl386.exe16}/syslevel.c (99%) rename dlls/{kernel32 => krnl386.exe16}/task.c (100%) rename dlls/{kernel32 => krnl386.exe16}/thunk.c (99%) rename dlls/{kernel32 => krnl386.exe16}/utthunk.c (99%) rename dlls/{kernel32/version16.rc => krnl386.exe16/version.rc} (100%) rename dlls/{kernel32 => krnl386.exe16}/vxd.c (97%) rename dlls/{kernel32 => krnl386.exe16}/wowthunk.c (98%) diff --git a/.gitignore b/.gitignore index 1cf31f154e4..6a63858845d 100644 --- a/.gitignore +++ b/.gitignore @@ -58,7 +58,6 @@ dlls/kernel32/nls/winerr_nld.mc.rc dlls/kernel32/nls/winerr_nor.mc.rc dlls/kernel32/nls/winerr_plk.mc.rc dlls/kernel32/nls/winerr_ptg.mc.rc -dlls/krnl386.exe16 dlls/libd3dx9.def dlls/libwinspool.def dlls/libxinput.def diff --git a/configure b/configure index e0ae0d2d8ff..c8c1defb538 100755 --- a/configure +++ b/configure @@ -15121,6 +15121,14 @@ ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS dlls/keyboard.drv16/Makefile: dlls/keyboard.drv16/Makefile.in dlls/Makedll.rules" ac_config_files="$ac_config_files dlls/keyboard.drv16/Makefile" +ALL_MAKEFILES="$ALL_MAKEFILES \\ + dlls/krnl386.exe16/Makefile" +test "x$enable_win16" != xno && ALL_DLL_DIRS="$ALL_DLL_DIRS \\ + krnl386.exe16" +ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS +dlls/krnl386.exe16/Makefile: dlls/krnl386.exe16/Makefile.in dlls/Makedll.rules" +ac_config_files="$ac_config_files dlls/krnl386.exe16/Makefile" + ALL_MAKEFILES="$ALL_MAKEFILES \\ dlls/loadperf/Makefile" test "x$enable_loadperf" != xno && ALL_DLL_DIRS="$ALL_DLL_DIRS \\ @@ -18924,6 +18932,7 @@ do "dlls/kernel32/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/kernel32/Makefile" ;; "dlls/kernel32/tests/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/kernel32/tests/Makefile" ;; "dlls/keyboard.drv16/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/keyboard.drv16/Makefile" ;; + "dlls/krnl386.exe16/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/krnl386.exe16/Makefile" ;; "dlls/loadperf/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/loadperf/Makefile" ;; "dlls/localspl/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/localspl/Makefile" ;; "dlls/localspl/tests/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/localspl/tests/Makefile" ;; diff --git a/configure.ac b/configure.ac index 9178306136c..184c70de91b 100644 --- a/configure.ac +++ b/configure.ac @@ -2305,6 +2305,7 @@ WINE_CONFIG_MAKEFILE([dlls/jscript/tests/Makefile],[dlls/Maketest.rules],[dlls], WINE_CONFIG_MAKEFILE([dlls/kernel32/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS]) WINE_CONFIG_MAKEFILE([dlls/kernel32/tests/Makefile],[dlls/Maketest.rules],[dlls],[ALL_TEST_DIRS],[enable_tests]) WINE_CONFIG_MAKEFILE([dlls/keyboard.drv16/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS],[enable_win16]) +WINE_CONFIG_MAKEFILE([dlls/krnl386.exe16/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS],[enable_win16]) WINE_CONFIG_MAKEFILE([dlls/loadperf/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS]) WINE_CONFIG_MAKEFILE([dlls/localspl/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS]) WINE_CONFIG_MAKEFILE([dlls/localspl/tests/Makefile],[dlls/Maketest.rules],[dlls],[ALL_TEST_DIRS],[enable_tests]) diff --git a/dlls/Makefile.in b/dlls/Makefile.in index 8e44eb0045a..13b3cbf680e 100644 --- a/dlls/Makefile.in +++ b/dlls/Makefile.in @@ -18,7 +18,6 @@ DOCSUBDIRS = $(DLLSUBDIRS) # 16-bit dlls WIN16_FILES = \ - krnl386.exe16 \ wprocs.dll16 @MAKE_RULES@ @@ -29,9 +28,6 @@ all: $(BUILDSUBDIRS) @WIN16_FILES@ # Placeholders for 16-bit libraries -krnl386.exe16: - echo "kernel32.dll" >$@ - wprocs.dll16: echo "winedos.dll" >$@ diff --git a/dlls/kernel32/Makefile.in b/dlls/kernel32/Makefile.in index df977366d77..fbf3f2d243e 100644 --- a/dlls/kernel32/Makefile.in +++ b/dlls/kernel32/Makefile.in @@ -9,8 +9,6 @@ IMPORTS = ntdll EXTRALIBS = @COREFOUNDATIONLIB@ @LIBPOLL@ EXTRADLLFLAGS = -Wb,-F,KERNEL32.dll -Wl,--image-base,0x7b800000 -SPEC_SRCS16 = krnl386.exe.spec - C_SRCS = \ actctx.c \ atom.c \ @@ -20,64 +18,38 @@ C_SRCS = \ console.c \ cpu.c \ debugger.c \ - dosmem.c \ editline.c \ environ.c \ except.c \ fiber.c \ file.c \ - file16.c \ format_msg.c \ - global16.c \ heap.c \ - instr.c \ kernel_main.c \ lcformat.c \ - local16.c \ locale.c \ lzexpand.c \ module.c \ - ne_module.c \ - ne_segment.c \ oldconfig.c \ path.c \ powermgnt.c \ process.c \ profile.c \ - relay16.c \ resource.c \ - resource16.c \ - selector.c \ - snoop16.c \ string.c \ sync.c \ - syslevel.c \ tape.c \ - task.c \ thread.c \ - thunk.c \ time.c \ toolhelp.c \ - utthunk.c \ version.c \ virtual.c \ - volume.c \ - vxd.c \ - wowthunk.c - -C_SRCS16 = \ - atom16.c \ - error16.c \ - kernel16.c \ - registry16.c + volume.c RC_SRCS = \ locale_rc.rc \ version.rc -RC_SRCS16 = \ - version16.rc - MC_SRCS = \ nls/winerr_deu.mc \ nls/winerr_enu.mc \ @@ -90,20 +62,8 @@ MC_SRCS = \ nls/winerr_plk.mc \ nls/winerr_ptg.mc -EXTRA_OBJS = relay16asm.o EXTRASUBDIRS = nls @MAKE_DLL_RULES@ -relay16asm.o: $(WINEBUILD) - $(WINEBUILD) $(WINEBUILDFLAGS) -o $@ --relay16 - -# Special rules for 16-bit resource and spec files - -krnl386.exe.spec.o: krnl386.exe.spec version16.res - $(WINEBUILD) $(WINEBUILDFLAGS) --dll -o $@ --dll-name kernel --main-module $(MODULE) --res version16.res --export $(SRCDIR)/krnl386.exe.spec - -version16.res: version16.rc - $(LDPATH) $(RC16) $(RC16FLAGS) -fo$@ $(SRCDIR)/version16.rc - @DEPENDENCIES@ # everything below this line is overwritten by make depend diff --git a/dlls/kernel32/file.c b/dlls/kernel32/file.c index 5c7ba20178d..edec6b0fb6f 100644 --- a/dlls/kernel32/file.c +++ b/dlls/kernel32/file.c @@ -40,7 +40,6 @@ #include "winternl.h" #include "winioctl.h" #include "wincon.h" -#include "wine/winbase16.h" #include "kernel_private.h" #include "wine/exception.h" @@ -1363,7 +1362,13 @@ HANDLE WINAPI CreateFileW( LPCWSTR filename, DWORD access, DWORD sharing, options, NULL, 0 ); if (status) { - if (vxd_name && vxd_name[0] && (ret = VXD_Open( vxd_name, access, sa ))) goto done; + if (vxd_name && vxd_name[0]) + { + static HANDLE (*vxd_open)(LPCWSTR,DWORD,SECURITY_ATTRIBUTES*); + if (!vxd_open) vxd_open = (void *)GetProcAddress( GetModuleHandleA("krnl386.exe16"), + "__wine_vxd_open" ); + if (vxd_open && (ret = vxd_open( vxd_name, access, sa ))) goto done; + } WARN("Unable to create file %s (status %x)\n", debugstr_w(filename), status); ret = INVALID_HANDLE_VALUE; @@ -2345,7 +2350,13 @@ BOOL WINAPI DeviceIoControl(HANDLE hDevice, DWORD dwIoControlCode, if (HIWORD( dwIoControlCode ) == 0 && (GetVersion() & 0x80000000)) { - DeviceIoProc proc = VXD_get_proc( hDevice ); + typedef BOOL (WINAPI *DeviceIoProc)(DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPOVERLAPPED); + static DeviceIoProc (*vxd_get_proc)(HANDLE); + DeviceIoProc proc = NULL; + + if (!vxd_get_proc) vxd_get_proc = (void *)GetProcAddress( GetModuleHandleA("krnl386.exe16"), + "__wine_vxd_get_proc" ); + if (vxd_get_proc) proc = vxd_get_proc( hDevice ); if (proc) return proc( dwIoControlCode, lpvInBuffer, cbInBuffer, lpvOutBuffer, cbOutBuffer, lpcbBytesReturned, lpOverlapped ); } diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index bab25a0287b..f3810175955 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -8,128 +8,128 @@ # - code generated by the MS Thunk Compiler # - symbols exported by the Oct 94 beta version of kernel32.dll - 1 stdcall -noname -i386 -register VxDCall0(long) VxDCall - 2 stdcall -noname -i386 -register VxDCall1(long) VxDCall - 3 stdcall -noname -i386 -register VxDCall2(long) VxDCall - 4 stdcall -noname -i386 -register VxDCall3(long) VxDCall - 5 stdcall -noname -i386 -register VxDCall4(long) VxDCall - 6 stdcall -noname -i386 -register VxDCall5(long) VxDCall - 7 stdcall -noname -i386 -register VxDCall6(long) VxDCall - 8 stdcall -noname -i386 -register VxDCall7(long) VxDCall - 9 stdcall -noname -i386 -register VxDCall8(long) VxDCall - 10 stdcall -noname -i386 k32CharToOemA(str ptr) - 11 stdcall -noname -i386 k32CharToOemBuffA(str ptr long) - 12 stdcall -noname -i386 k32OemToCharA(ptr ptr) - 13 stdcall -noname -i386 k32OemToCharBuffA(ptr ptr long) - 14 stdcall -noname -i386 k32LoadStringA(long long ptr long) - 15 varargs -noname -i386 k32wsprintfA(str str) - 16 stdcall -noname -i386 k32wvsprintfA(ptr str ptr) - 17 stdcall -noname -i386 -register CommonUnimpStub() - 18 stdcall -noname GetProcessDword(long long) - 19 stub -noname ThunkTheTemplateHandle - 20 stdcall -noname DosFileHandleToWin32Handle(long) - 21 stdcall -noname Win32HandleToDosFileHandle(long) - 22 stdcall -noname DisposeLZ32Handle(long) - 23 stub -noname GDIReallyCares - 24 stdcall -noname GlobalAlloc16(long long) - 25 stdcall -noname GlobalLock16(long) - 26 stdcall -noname GlobalUnlock16(long) - 27 stdcall -noname GlobalFix16(long) - 28 stdcall -noname GlobalUnfix16(long) - 29 stdcall -noname GlobalWire16(long) - 30 stdcall -noname GlobalUnWire16(long) - 31 stdcall -noname GlobalFree16(long) - 32 stdcall -noname GlobalSize16(long) - 33 stdcall -noname -i386 HouseCleanLogicallyDeadHandles() - 34 stdcall -noname -i386 GetWin16DOSEnv() - 35 stdcall -noname LoadLibrary16(str) - 36 stdcall -noname FreeLibrary16(long) - 37 stdcall -noname GetProcAddress16(long str) WIN32_GetProcAddress16 - 38 stdcall -noname -i386 -register AllocMappedBuffer() - 39 stdcall -noname -i386 -register FreeMappedBuffer() - 40 stdcall -noname -i386 -register OT_32ThkLSF() - 41 stdcall -noname -i386 ThunkInitLSF(long str long str str) - 42 stdcall -noname -i386 -register LogApiThkLSF(str) - 43 stdcall -noname -i386 ThunkInitLS(long str long str str) - 44 stdcall -noname -i386 -register LogApiThkSL(str) - 45 stdcall -noname -i386 -register Common32ThkLS() - 46 stdcall -noname -i386 ThunkInitSL(long str long str str) - 47 stdcall -noname -i386 -register LogCBThkSL(str) - 48 stdcall -noname ReleaseThunkLock(ptr) - 49 stdcall -noname RestoreThunkLock(long) + 1 stdcall -noname -i386 -register VxDCall0(long) krnl386.exe16.VxDCall0 + 2 stdcall -noname -i386 -register VxDCall1(long) krnl386.exe16.VxDCall1 + 3 stdcall -noname -i386 -register VxDCall2(long) krnl386.exe16.VxDCall2 + 4 stdcall -noname -i386 -register VxDCall3(long) krnl386.exe16.VxDCall3 + 5 stdcall -noname -i386 -register VxDCall4(long) krnl386.exe16.VxDCall4 + 6 stdcall -noname -i386 -register VxDCall5(long) krnl386.exe16.VxDCall5 + 7 stdcall -noname -i386 -register VxDCall6(long) krnl386.exe16.VxDCall6 + 8 stdcall -noname -i386 -register VxDCall7(long) krnl386.exe16.VxDCall7 + 9 stdcall -noname -i386 -register VxDCall8(long) krnl386.exe16.VxDCall8 + 10 stdcall -noname -i386 k32CharToOemA(str ptr) krnl386.exe16.k32CharToOemA + 11 stdcall -noname -i386 k32CharToOemBuffA(str ptr long) krnl386.exe16.k32CharToOemBuffA + 12 stdcall -noname -i386 k32OemToCharA(ptr ptr) krnl386.exe16.k32OemToCharA + 13 stdcall -noname -i386 k32OemToCharBuffA(ptr ptr long) krnl386.exe16.k32OemToCharBuffA + 14 stdcall -noname -i386 k32LoadStringA(long long ptr long) krnl386.exe16.k32LoadStringA + 15 varargs -noname -i386 k32wsprintfA(str str) krnl386.exe16.k32wsprintfA + 16 stdcall -noname -i386 k32wvsprintfA(ptr str ptr) krnl386.exe16.k32wvsprintfA + 17 stdcall -noname -i386 -register CommonUnimpStub() krnl386.exe16.CommonUnimpStub + 18 stdcall -noname -i386 GetProcessDword(long long) krnl386.exe16.GetProcessDword + 19 stub -noname -i386 ThunkTheTemplateHandle + 20 stdcall -noname -i386 DosFileHandleToWin32Handle(long) krnl386.exe16.DosFileHandleToWin32Handle + 21 stdcall -noname -i386 Win32HandleToDosFileHandle(long) krnl386.exe16.Win32HandleToDosFileHandle + 22 stdcall -noname -i386 DisposeLZ32Handle(long) krnl386.exe16.DisposeLZ32Handle + 23 stub -noname -i386 GDIReallyCares + 24 stdcall -noname -i386 GlobalAlloc16(long long) krnl386.exe16.GlobalAlloc16 + 25 stdcall -noname -i386 GlobalLock16(long) krnl386.exe16.GlobalLock16 + 26 stdcall -noname -i386 GlobalUnlock16(long) krnl386.exe16.GlobalUnlock16 + 27 stdcall -noname -i386 GlobalFix16(long) krnl386.exe16.GlobalFix16 + 28 stdcall -noname -i386 GlobalUnfix16(long) krnl386.exe16.GlobalUnfix16 + 29 stdcall -noname -i386 GlobalWire16(long) krnl386.exe16.GlobalWire16 + 30 stdcall -noname -i386 GlobalUnWire16(long) krnl386.exe16.GlobalUnWire16 + 31 stdcall -noname -i386 GlobalFree16(long) krnl386.exe16.GlobalFree16 + 32 stdcall -noname -i386 GlobalSize16(long) krnl386.exe16.GlobalSize16 + 33 stdcall -noname -i386 HouseCleanLogicallyDeadHandles() krnl386.exe16.HouseCleanLogicallyDeadHandles + 34 stdcall -noname -i386 GetWin16DOSEnv() krnl386.exe16.GetWin16DOSEnv + 35 stdcall -noname -i386 LoadLibrary16(str) krnl386.exe16.LoadLibrary16 + 36 stdcall -noname -i386 FreeLibrary16(long) krnl386.exe16.FreeLibrary16 + 37 stdcall -noname -i386 GetProcAddress16(long str) krnl386.exe16.GetProcAddress16 + 38 stdcall -noname -i386 -register AllocMappedBuffer() krnl386.exe16.AllocMappedBuffer + 39 stdcall -noname -i386 -register FreeMappedBuffer() krnl386.exe16.FreeMappedBuffer + 40 stdcall -noname -i386 -register OT_32ThkLSF() krnl386.exe16.OT_32ThkLSF + 41 stdcall -noname -i386 ThunkInitLSF(long str long str str) krnl386.exe16.ThunkInitLSF + 42 stdcall -noname -i386 -register LogApiThkLSF(str) krnl386.exe16.LogApiThkLSF + 43 stdcall -noname -i386 ThunkInitLS(long str long str str) krnl386.exe16.ThunkInitLS + 44 stdcall -noname -i386 -register LogApiThkSL(str) krnl386.exe16.LogApiThkSL + 45 stdcall -noname -i386 -register Common32ThkLS() krnl386.exe16.Common32ThkLS + 46 stdcall -noname -i386 ThunkInitSL(long str long str str) krnl386.exe16.ThunkInitSL + 47 stdcall -noname -i386 -register LogCBThkSL(str) krnl386.exe16.LogCBThkSL + 48 stdcall -noname -i386 ReleaseThunkLock(ptr) krnl386.exe16.ReleaseThunkLock + 49 stdcall -noname -i386 RestoreThunkLock(long) krnl386.exe16.RestoreThunkLock - 51 stdcall -noname -i386 -register W32S_BackTo32() - 52 stdcall -noname -i386 GetThunkBuff() - 53 stdcall -noname -i386 GetThunkStuff(str str) - 54 stdcall -noname K32WOWCallback16(long long) - 55 stdcall -noname K32WOWCallback16Ex(ptr long long ptr ptr) - 56 stdcall -noname K32WOWGetVDMPointer(long long long) - 57 stdcall -noname K32WOWHandle32(long long) - 58 stdcall -noname K32WOWHandle16(long long) - 59 stdcall -noname K32WOWGlobalAlloc16(long long) - 60 stdcall -noname K32WOWGlobalLock16(long) - 61 stdcall -noname K32WOWGlobalUnlock16(long) - 62 stdcall -noname K32WOWGlobalFree16(long) - 63 stdcall -noname K32WOWGlobalAllocLock16(long long ptr) - 64 stdcall -noname K32WOWGlobalUnlockFree16(long) - 65 stdcall -noname K32WOWGlobalLockSize16(long ptr) - 66 stdcall -noname K32WOWYield16() - 67 stdcall -noname K32WOWDirectedYield16(long) - 68 stdcall -noname K32WOWGetVDMPointerFix(long long long) - 69 stdcall -noname K32WOWGetVDMPointerUnfix(long) - 70 stdcall -noname K32WOWGetDescriptor(long long) - 71 stub -noname IsThreadId - 72 stdcall -noname -arch=win32 -ret64 K32RtlLargeIntegerAdd(long long long long) ntdll.RtlLargeIntegerAdd - 73 stdcall -noname -arch=win32 -ret64 K32RtlEnlargedIntegerMultiply(long long) ntdll.RtlEnlargedIntegerMultiply - 74 stdcall -noname -arch=win32 -ret64 K32RtlEnlargedUnsignedMultiply(long long) ntdll.RtlEnlargedUnsignedMultiply - 75 stdcall -noname -arch=win32 K32RtlEnlargedUnsignedDivide(long long long ptr) ntdll.RtlEnlargedUnsignedDivide - 76 stdcall -noname -arch=win32 -ret64 K32RtlExtendedLargeIntegerDivide(long long long ptr) ntdll.RtlExtendedLargeIntegerDivide - 77 stdcall -noname -arch=win32 -ret64 K32RtlExtendedMagicDivide(long long long long long) ntdll.RtlExtendedMagicDivide - 78 stdcall -noname -arch=win32 -ret64 K32RtlExtendedIntegerMultiply(long long long) ntdll.RtlExtendedIntegerMultiply - 79 stdcall -noname -arch=win32 -ret64 K32RtlLargeIntegerShiftLeft(long long long) ntdll.RtlLargeIntegerShiftLeft - 80 stdcall -noname -arch=win32 -ret64 K32RtlLargeIntegerShiftRight(long long long) ntdll.RtlLargeIntegerShiftRight - 81 stdcall -noname -arch=win32 -ret64 K32RtlLargeIntegerArithmeticShift(long long long) ntdll.RtlLargeIntegerArithmeticShift - 82 stdcall -noname -arch=win32 -ret64 K32RtlLargeIntegerNegate(long long) ntdll.RtlLargeIntegerNegate - 83 stdcall -noname -arch=win32 -ret64 K32RtlLargeIntegerSubtract(long long long long) ntdll.RtlLargeIntegerSubtract - 84 stdcall -noname -arch=win32 -ret64 K32RtlConvertLongToLargeInteger(long) ntdll.RtlConvertLongToLargeInteger - 85 stdcall -noname -arch=win32 -ret64 K32RtlConvertUlongToLargeInteger(long) ntdll.RtlConvertUlongToLargeInteger - 86 stdcall @(ptr) _KERNEL32_86 - 87 stdcall -noname -i386 SSOnBigStack() - 88 varargs -noname -i386 SSCall(long long ptr) - 89 stdcall -noname -i386 -register FT_PrologPrime() - 90 stdcall -noname -i386 -register QT_ThunkPrime() - 91 stdcall -noname -i386 PK16FNF(ptr) - 92 stdcall -noname -i386 GetPK16SysVar() - 93 stdcall -noname GetpWin16Lock(ptr) - 94 stdcall -noname _CheckNotSysLevel(ptr) - 95 stdcall -noname _ConfirmSysLevel(ptr) - 96 stdcall -noname _ConfirmWin16Lock() - 97 stdcall -noname _EnterSysLevel(ptr) - 98 stdcall -noname _LeaveSysLevel(ptr) - 99 stdcall -i386 @(long) _KERNEL32_99 -100 stdcall -i386 @(long long long) _KERNEL32_100 -101 stub @ -102 stub @ -103 stub @ -104 stub @ -105 stub @ -106 stub @ -107 stub @ -108 stub @ -109 stub @ -110 stub @ -111 stub @ -112 stub @ -113 stub @ -114 stub @ -115 stub @ -116 stub @ -117 stub @ + 51 stdcall -noname -i386 -register W32S_BackTo32() krnl386.exe16.W32S_BackTo32 + 52 stdcall -noname -i386 GetThunkBuff() krnl386.exe16.GetThunkBuff + 53 stdcall -noname -i386 GetThunkStuff(str str) krnl386.exe16.GetThunkStuff + 54 stdcall -noname -i386 K32WOWCallback16(long long) krnl386.exe16.K32WOWCallback16 + 55 stdcall -noname -i386 K32WOWCallback16Ex(ptr long long ptr ptr) krnl386.exe16.K32WOWCallback16Ex + 56 stdcall -noname -i386 K32WOWGetVDMPointer(long long long) krnl386.exe16.K32WOWGetVDMPointer + 57 stdcall -noname -i386 K32WOWHandle32(long long) krnl386.exe16.K32WOWHandle32 + 58 stdcall -noname -i386 K32WOWHandle16(long long) krnl386.exe16.K32WOWHandle16 + 59 stdcall -noname -i386 K32WOWGlobalAlloc16(long long) krnl386.exe16.K32WOWGlobalAlloc16 + 60 stdcall -noname -i386 K32WOWGlobalLock16(long) krnl386.exe16.K32WOWGlobalLock16 + 61 stdcall -noname -i386 K32WOWGlobalUnlock16(long) krnl386.exe16.K32WOWGlobalUnlock16 + 62 stdcall -noname -i386 K32WOWGlobalFree16(long) krnl386.exe16.K32WOWGlobalFree16 + 63 stdcall -noname -i386 K32WOWGlobalAllocLock16(long long ptr) krnl386.exe16.K32WOWGlobalAllocLock16 + 64 stdcall -noname -i386 K32WOWGlobalUnlockFree16(long) krnl386.exe16.K32WOWGlobalUnlockFree16 + 65 stdcall -noname -i386 K32WOWGlobalLockSize16(long ptr) krnl386.exe16.K32WOWGlobalLockSize16 + 66 stdcall -noname -i386 K32WOWYield16() krnl386.exe16.K32WOWYield16 + 67 stdcall -noname -i386 K32WOWDirectedYield16(long) krnl386.exe16.K32WOWDirectedYield16 + 68 stdcall -noname -i386 K32WOWGetVDMPointerFix(long long long) krnl386.exe16.K32WOWGetVDMPointerFix + 69 stdcall -noname -i386 K32WOWGetVDMPointerUnfix(long) krnl386.exe16.K32WOWGetVDMPointerUnfix + 70 stdcall -noname -i386 K32WOWGetDescriptor(long long) krnl386.exe16.K32WOWGetDescriptor + 71 stub -noname -i386 IsThreadId + 72 stdcall -noname -i386 -ret64 K32RtlLargeIntegerAdd(long long long long) ntdll.RtlLargeIntegerAdd + 73 stdcall -noname -i386 -ret64 K32RtlEnlargedIntegerMultiply(long long) ntdll.RtlEnlargedIntegerMultiply + 74 stdcall -noname -i386 -ret64 K32RtlEnlargedUnsignedMultiply(long long) ntdll.RtlEnlargedUnsignedMultiply + 75 stdcall -noname -i386 K32RtlEnlargedUnsignedDivide(long long long ptr) ntdll.RtlEnlargedUnsignedDivide + 76 stdcall -noname -i386 -ret64 K32RtlExtendedLargeIntegerDivide(long long long ptr) ntdll.RtlExtendedLargeIntegerDivide + 77 stdcall -noname -i386 -ret64 K32RtlExtendedMagicDivide(long long long long long) ntdll.RtlExtendedMagicDivide + 78 stdcall -noname -i386 -ret64 K32RtlExtendedIntegerMultiply(long long long) ntdll.RtlExtendedIntegerMultiply + 79 stdcall -noname -i386 -ret64 K32RtlLargeIntegerShiftLeft(long long long) ntdll.RtlLargeIntegerShiftLeft + 80 stdcall -noname -i386 -ret64 K32RtlLargeIntegerShiftRight(long long long) ntdll.RtlLargeIntegerShiftRight + 81 stdcall -noname -i386 -ret64 K32RtlLargeIntegerArithmeticShift(long long long) ntdll.RtlLargeIntegerArithmeticShift + 82 stdcall -noname -i386 -ret64 K32RtlLargeIntegerNegate(long long) ntdll.RtlLargeIntegerNegate + 83 stdcall -noname -i386 -ret64 K32RtlLargeIntegerSubtract(long long long long) ntdll.RtlLargeIntegerSubtract + 84 stdcall -noname -i386 -ret64 K32RtlConvertLongToLargeInteger(long) ntdll.RtlConvertLongToLargeInteger + 85 stdcall -noname -i386 -ret64 K32RtlConvertUlongToLargeInteger(long) ntdll.RtlConvertUlongToLargeInteger + 86 stdcall -i386 @(ptr) krnl386.exe16._KERNEL32_86 + 87 stdcall -noname -i386 SSOnBigStack() krnl386.exe16.SSOnBigStack + 88 varargs -noname -i386 SSCall(long long ptr) krnl386.exe16.SSCall + 89 stdcall -noname -i386 -register FT_PrologPrime() krnl386.exe16.FT_PrologPrime + 90 stdcall -noname -i386 -register QT_ThunkPrime() krnl386.exe16.QT_ThunkPrime + 91 stdcall -noname -i386 PK16FNF(ptr) krnl386.exe16.PK16FNF + 92 stdcall -noname -i386 GetPK16SysVar() krnl386.exe16.GetPK16SysVar + 93 stdcall -noname -i386 GetpWin16Lock(ptr) krnl386.exe16.GetpWin16Lock + 94 stdcall -noname -i386 _CheckNotSysLevel(ptr) krnl386.exe16._CheckNotSysLevel + 95 stdcall -noname -i386 _ConfirmSysLevel(ptr) krnl386.exe16._ConfirmSysLevel + 96 stdcall -noname -i386 _ConfirmWin16Lock() krnl386.exe16._ConfirmWin16Lock + 97 stdcall -noname -i386 _EnterSysLevel(ptr) krnl386.exe16._EnterSysLevel + 98 stdcall -noname -i386 _LeaveSysLevel(ptr) krnl386.exe16._LeaveSysLevel + 99 stdcall -i386 @(long) krnl386.exe16._KERNEL32_99 +100 stdcall -i386 @(long long long) krnl386.exe16._KERNEL32_100 +101 stub -i386 @ +102 stub -i386 @ +103 stub -i386 @ +104 stub -i386 @ +105 stub -i386 @ +106 stub -i386 @ +107 stub -i386 @ +108 stub -i386 @ +109 stub -i386 @ +110 stub -i386 @ +111 stub -i386 @ +112 stub -i386 @ +113 stub -i386 @ +114 stub -i386 @ +115 stub -i386 @ +116 stub -i386 @ +117 stub -i386 @ -119 stub @ -120 stub @ -121 stub @ -122 stub @ +119 stub -i386 @ +120 stub -i386 @ +121 stub -i386 @ +122 stub -i386 @ # functions exported by name, ordinal doesn't matter @@ -144,7 +144,7 @@ @ stdcall AddVectoredExceptionHandler(long ptr) ntdll.RtlAddVectoredExceptionHandler @ stdcall AllocConsole() @ stub -i386 AllocLSCallback -@ stdcall -i386 AllocSLCallback(ptr ptr) +@ stdcall -i386 AllocSLCallback(ptr ptr) krnl386.exe16.AllocSLCallback @ stub AllocateUserPhysicalPages @ stdcall AreFileApisANSI() @ stdcall AssignProcessToJobObject(ptr ptr) @@ -341,23 +341,23 @@ @ stub ExpungeConsoleCommandHistoryA @ stub ExpungeConsoleCommandHistoryW @ stub ExtendVirtualBuffer -@ stdcall -i386 -norelay FT_Exit0() -@ stdcall -i386 -norelay FT_Exit12() -@ stdcall -i386 -norelay FT_Exit16() -@ stdcall -i386 -norelay FT_Exit20() -@ stdcall -i386 -norelay FT_Exit24() -@ stdcall -i386 -norelay FT_Exit28() -@ stdcall -i386 -norelay FT_Exit32() -@ stdcall -i386 -norelay FT_Exit36() -@ stdcall -i386 -norelay FT_Exit40() -@ stdcall -i386 -norelay FT_Exit44() -@ stdcall -i386 -norelay FT_Exit48() -@ stdcall -i386 -norelay FT_Exit4() -@ stdcall -i386 -norelay FT_Exit52() -@ stdcall -i386 -norelay FT_Exit56() -@ stdcall -i386 -norelay FT_Exit8() -@ stdcall -i386 -register FT_Prolog() -@ stdcall -i386 -register FT_Thunk() +@ stdcall -i386 -norelay FT_Exit0() krnl386.exe16.FT_Exit0 +@ stdcall -i386 -norelay FT_Exit12() krnl386.exe16.FT_Exit12 +@ stdcall -i386 -norelay FT_Exit16() krnl386.exe16.FT_Exit16 +@ stdcall -i386 -norelay FT_Exit20() krnl386.exe16.FT_Exit20 +@ stdcall -i386 -norelay FT_Exit24() krnl386.exe16.FT_Exit24 +@ stdcall -i386 -norelay FT_Exit28() krnl386.exe16.FT_Exit28 +@ stdcall -i386 -norelay FT_Exit32() krnl386.exe16.FT_Exit32 +@ stdcall -i386 -norelay FT_Exit36() krnl386.exe16.FT_Exit36 +@ stdcall -i386 -norelay FT_Exit40() krnl386.exe16.FT_Exit40 +@ stdcall -i386 -norelay FT_Exit44() krnl386.exe16.FT_Exit44 +@ stdcall -i386 -norelay FT_Exit48() krnl386.exe16.FT_Exit48 +@ stdcall -i386 -norelay FT_Exit4() krnl386.exe16.FT_Exit4 +@ stdcall -i386 -norelay FT_Exit52() krnl386.exe16.FT_Exit52 +@ stdcall -i386 -norelay FT_Exit56() krnl386.exe16.FT_Exit56 +@ stdcall -i386 -norelay FT_Exit8() krnl386.exe16.FT_Exit8 +@ stdcall -i386 -register FT_Prolog() krnl386.exe16.FT_Prolog +@ stdcall -i386 -register FT_Thunk() krnl386.exe16.FT_Thunk @ stdcall FatalAppExitA(long str) @ stdcall FatalAppExitW(long wstr) @ stdcall FatalExit(long) @@ -412,15 +412,15 @@ @ stdcall FreeConsole() @ stdcall FreeEnvironmentStringsA(ptr) @ stdcall FreeEnvironmentStringsW(ptr) -@ stub FreeLSCallback +@ stub -i386 FreeLSCallback @ stdcall FreeLibrary(long) @ stdcall FreeLibraryAndExitThread(long long) @ stdcall FreeResource(long) -@ stdcall -i386 FreeSLCallback(long) +@ stdcall -i386 FreeSLCallback(long) krnl386.exe16.FreeSLCallback @ stub FreeUserPhysicalPages @ stub FreeVirtualBuffer @ stdcall GenerateConsoleCtrlEvent(long long) -@ stdcall -i386 Get16DLLAddress(long str) +@ stdcall -i386 Get16DLLAddress(long str) krnl386.exe16.Get16DLLAddress @ stdcall GetACP() @ stdcall GetAtomNameA(long ptr long) @ stdcall GetAtomNameW(long ptr long) @@ -536,8 +536,8 @@ @ stdcall GetGeoInfoW(long long ptr long long) @ stdcall GetHandleContext(long) @ stdcall GetHandleInformation(long ptr) -@ stub GetLSCallbackTarget -@ stub GetLSCallbackTemplate +@ stub -i386 GetLSCallbackTarget +@ stub -i386 GetLSCallbackTemplate @ stdcall GetLargestConsoleWindowSize(long) @ stdcall GetLastError() @ stub GetLinguistLangSize @@ -608,8 +608,8 @@ @ stdcall GetProfileStringA(str str str ptr long) @ stdcall GetProfileStringW(wstr wstr wstr ptr long) @ stdcall GetQueuedCompletionStatus(long ptr ptr ptr long) -@ stub GetSLCallbackTarget -@ stub GetSLCallbackTemplate +@ stub -i386 GetSLCallbackTarget +@ stub -i386 GetSLCallbackTemplate @ stdcall GetShortPathNameA(str ptr long) @ stdcall GetShortPathNameW(wstr ptr long) @ stdcall GetStartupInfoA(ptr) @@ -744,18 +744,18 @@ @ stdcall IsDBCSLeadByte(long) @ stdcall IsDBCSLeadByteEx(long long) @ stdcall IsDebuggerPresent() -@ stub IsLSCallback +@ stub -i386 IsLSCallback @ stdcall IsProcessInJob(long long ptr) @ stdcall IsProcessorFeaturePresent(long) -@ stub IsSLCallback +@ stub -i386 IsSLCallback @ stdcall IsSystemResumeAutomatic() @ stdcall IsValidCodePage(long) @ stdcall IsValidLanguageGroup(long long) @ stdcall IsValidLocale(long long) # @ stub IsValidUILanguage @ stdcall IsWow64Process(ptr ptr) -@ stdcall -i386 -register K32Thk1632Epilog() -@ stdcall -i386 -register K32Thk1632Prolog() +@ stdcall -i386 -register K32Thk1632Epilog() krnl386.exe16.K32Thk1632Epilog +@ stdcall -i386 -register K32Thk1632Prolog() krnl386.exe16.K32Thk1632Prolog @ stdcall LCIDToLocaleName(long ptr long long) @ stdcall LCMapStringA(long long str long ptr long) @ stdcall LCMapStringW(long long wstr long ptr long) @@ -793,15 +793,15 @@ @ stdcall LockFileEx(long long long long long ptr) @ stdcall LockResource(long) @ stdcall MakeCriticalSectionGlobal(ptr) -@ stdcall -i386 -norelay MapHInstLS() -@ stdcall -i386 -norelay MapHInstLS_PN() -@ stdcall -i386 -norelay MapHInstSL() -@ stdcall -i386 -norelay MapHInstSL_PN() -@ stdcall MapHModuleLS(long) -@ stdcall MapHModuleSL(long) -@ stdcall MapLS(ptr) -@ stdcall MapSL(long) -@ stdcall MapSLFix(long) +@ stdcall -i386 -norelay MapHInstLS() krnl386.exe16.MapHInstLS +@ stdcall -i386 -norelay MapHInstLS_PN() krnl386.exe16.MapHInstLS_PN +@ stdcall -i386 -norelay MapHInstSL() krnl386.exe16.MapHInstSL +@ stdcall -i386 -norelay MapHInstSL_PN() krnl386.exe16.MapHInstSL_PN +@ stdcall -i386 MapHModuleLS(long) krnl386.exe16.MapHModuleLS +@ stdcall -i386 MapHModuleSL(long) krnl386.exe16.MapHModuleSL +@ stdcall -i386 MapLS(ptr) krnl386.exe16.MapLS +@ stdcall -i386 MapSL(long) krnl386.exe16.MapSL +@ stdcall -i386 MapSLFix(long) krnl386.exe16.MapSLFix # @ stub MapUserPhysicalPages # @ stub MapUserPhysicalPagesScatter @ stdcall MapViewOfFile(long long long long long) @@ -841,7 +841,7 @@ @ stdcall OpenSemaphoreA(long long str) @ stdcall OpenSemaphoreW(long long wstr) @ stdcall OpenThread(long long long) -@ stdcall OpenVxDHandle(long) +@ stdcall -i386 OpenVxDHandle(long) @ stdcall OpenWaitableTimerA(long long str) @ stdcall OpenWaitableTimerW(long long wstr) @ stdcall OutputDebugStringA(str) @@ -853,8 +853,8 @@ @ stdcall PrepareTape(ptr long long) @ stub PrivCopyFileExW @ stub PrivMoveFileIdentityW -@ stdcall PrivateFreeLibrary(long) -@ stdcall PrivateLoadLibrary(str) +@ stdcall -i386 PrivateFreeLibrary(long) krnl386.exe16.PrivateFreeLibrary +@ stdcall -i386 PrivateLoadLibrary(str) krnl386.exe16.PrivateLoadLibrary @ stdcall Process32First (ptr ptr) @ stdcall Process32FirstW (ptr ptr) @ stdcall Process32Next (ptr ptr) @@ -862,7 +862,7 @@ @ stdcall ProcessIdToSessionId(long ptr) @ stdcall PulseEvent(long) @ stdcall PurgeComm(long long) -@ stdcall -i386 -register QT_Thunk() +@ stdcall -i386 -register QT_Thunk() krnl386.exe16.QT_Thunk @ stdcall QueryActCtxW(long ptr ptr long ptr long ptr) @ stdcall QueryDepthSList(ptr) ntdll.RtlQueryDepthSList @ stdcall QueryDosDeviceA(str ptr long) @@ -934,26 +934,26 @@ @ stdcall -arch=x86_64 RtlUnwindEx(long long ptr long ptr) ntdll.RtlUnwindEx @ stdcall -arch=x86_64 RtlVirtualUnwind(long long long ptr ptr ptr ptr ptr) ntdll.RtlVirtualUnwind @ stdcall RtlZeroMemory(ptr long) ntdll.RtlZeroMemory -@ stdcall -i386 -norelay SMapLS() -@ stdcall -i386 -norelay SMapLS_IP_EBP_12() -@ stdcall -i386 -norelay SMapLS_IP_EBP_16() -@ stdcall -i386 -norelay SMapLS_IP_EBP_20() -@ stdcall -i386 -norelay SMapLS_IP_EBP_24() -@ stdcall -i386 -norelay SMapLS_IP_EBP_28() -@ stdcall -i386 -norelay SMapLS_IP_EBP_32() -@ stdcall -i386 -norelay SMapLS_IP_EBP_36() -@ stdcall -i386 -norelay SMapLS_IP_EBP_40() -@ stdcall -i386 -norelay SMapLS_IP_EBP_8() -@ stdcall -i386 -norelay SUnMapLS() -@ stdcall -i386 -norelay SUnMapLS_IP_EBP_12() -@ stdcall -i386 -norelay SUnMapLS_IP_EBP_16() -@ stdcall -i386 -norelay SUnMapLS_IP_EBP_20() -@ stdcall -i386 -norelay SUnMapLS_IP_EBP_24() -@ stdcall -i386 -norelay SUnMapLS_IP_EBP_28() -@ stdcall -i386 -norelay SUnMapLS_IP_EBP_32() -@ stdcall -i386 -norelay SUnMapLS_IP_EBP_36() -@ stdcall -i386 -norelay SUnMapLS_IP_EBP_40() -@ stdcall -i386 -norelay SUnMapLS_IP_EBP_8() +@ stdcall -i386 -norelay SMapLS() krnl386.exe16.SMapLS +@ stdcall -i386 -norelay SMapLS_IP_EBP_12() krnl386.exe16.SMapLS_IP_EBP_12 +@ stdcall -i386 -norelay SMapLS_IP_EBP_16() krnl386.exe16.SMapLS_IP_EBP_16 +@ stdcall -i386 -norelay SMapLS_IP_EBP_20() krnl386.exe16.SMapLS_IP_EBP_20 +@ stdcall -i386 -norelay SMapLS_IP_EBP_24() krnl386.exe16.SMapLS_IP_EBP_24 +@ stdcall -i386 -norelay SMapLS_IP_EBP_28() krnl386.exe16.SMapLS_IP_EBP_28 +@ stdcall -i386 -norelay SMapLS_IP_EBP_32() krnl386.exe16.SMapLS_IP_EBP_32 +@ stdcall -i386 -norelay SMapLS_IP_EBP_36() krnl386.exe16.SMapLS_IP_EBP_36 +@ stdcall -i386 -norelay SMapLS_IP_EBP_40() krnl386.exe16.SMapLS_IP_EBP_40 +@ stdcall -i386 -norelay SMapLS_IP_EBP_8() krnl386.exe16.SMapLS_IP_EBP_8 +@ stdcall -i386 -norelay SUnMapLS() krnl386.exe16.SUnMapLS +@ stdcall -i386 -norelay SUnMapLS_IP_EBP_12() krnl386.exe16.SUnMapLS_IP_EBP_12 +@ stdcall -i386 -norelay SUnMapLS_IP_EBP_16() krnl386.exe16.SUnMapLS_IP_EBP_16 +@ stdcall -i386 -norelay SUnMapLS_IP_EBP_20() krnl386.exe16.SUnMapLS_IP_EBP_20 +@ stdcall -i386 -norelay SUnMapLS_IP_EBP_24() krnl386.exe16.SUnMapLS_IP_EBP_24 +@ stdcall -i386 -norelay SUnMapLS_IP_EBP_28() krnl386.exe16.SUnMapLS_IP_EBP_28 +@ stdcall -i386 -norelay SUnMapLS_IP_EBP_32() krnl386.exe16.SUnMapLS_IP_EBP_32 +@ stdcall -i386 -norelay SUnMapLS_IP_EBP_36() krnl386.exe16.SUnMapLS_IP_EBP_36 +@ stdcall -i386 -norelay SUnMapLS_IP_EBP_40() krnl386.exe16.SUnMapLS_IP_EBP_40 +@ stdcall -i386 -norelay SUnMapLS_IP_EBP_8() krnl386.exe16.SUnMapLS_IP_EBP_8 @ stdcall ScrollConsoleScreenBufferA(long ptr ptr ptr ptr) @ stdcall ScrollConsoleScreenBufferW(long ptr ptr ptr ptr) @ stdcall SearchPathA(str str str long ptr ptr) @@ -1088,7 +1088,7 @@ @ stdcall TermsrvAppInstallMode() @ stdcall Thread32First(long ptr) @ stdcall Thread32Next(long ptr) -@ stdcall -i386 ThunkConnect32(ptr str str str ptr ptr) +@ stdcall -i386 ThunkConnect32(ptr str str str ptr ptr) krnl386.exe16.ThunkConnect32 @ stdcall TlsAlloc() @ stub TlsAllocInternal @ stdcall TlsFree(long) @@ -1101,10 +1101,10 @@ @ stub TrimVirtualBuffer @ stdcall TryEnterCriticalSection(ptr) ntdll.RtlTryEnterCriticalSection @ stdcall TzSpecificLocalTimeToSystemTime(ptr ptr ptr) -@ stdcall -i386 UTRegister(long str str str ptr ptr ptr) -@ stdcall -i386 UTUnRegister(long) -@ stdcall UnMapLS(long) -@ stdcall -i386 -norelay UnMapSLFixArray(long long) +@ stdcall -i386 UTRegister(long str str str ptr ptr ptr) krnl386.exe16.UTRegister +@ stdcall -i386 UTUnRegister(long) krnl386.exe16.UTUnRegister +@ stdcall -i386 UnMapLS(long) krnl386.exe16.UnMapLS +@ stdcall -i386 -norelay UnMapSLFixArray(long long) krnl386.exe16.UnMapSLFixArray @ stdcall UnhandledExceptionFilter(ptr) @ stdcall UninitializeCriticalSection(ptr) @ stdcall UnlockFile(long long long long long) @@ -1210,47 +1210,47 @@ ################################################################ # Wine extensions: Win16 functions that are needed by other dlls # -@ stdcall _lclose16(long) -@ stdcall AllocCStoDSAlias16(long) -@ stdcall AllocSelectorArray16(long) -@ stdcall ConvertDialog32To16(ptr long ptr) -@ stdcall FarGetOwner16(long) -@ stdcall FarSetOwner16(long long) -@ stdcall FindResource16(long str str) -@ stdcall FreeResource16(long) -@ stdcall FreeSelector16(long) -@ stdcall GetCurrentPDB16() -@ stdcall GetCurrentTask() -@ stdcall GetDOSEnvironment16() -@ stdcall GetExePtr(long) -@ stdcall GetExpWinVer16(long) -@ stdcall GetModuleHandle16(str) -@ stdcall GetSelectorLimit16(long) -@ stdcall GlobalDOSAlloc16(long) -@ stdcall GlobalDOSFree16(long) -@ stdcall GlobalFlags16(long) -@ stdcall GlobalReAlloc16(long long long) -@ stdcall InitTask16(ptr) -@ stdcall IsBadReadPtr16(long long) -@ stdcall IsTask16(long) -@ stdcall LoadModule16(str long) -@ stdcall LoadResource16(long long) -@ stdcall LocalAlloc16(long long) -@ stdcall LocalInit16(long long long) -@ stdcall LocalLock16(long) -@ stdcall LocalUnlock16(long) -@ stdcall LocalReAlloc16(long long long) -@ stdcall LocalFree16(long) -@ stdcall LocalSize16(long) -@ stdcall LocalCompact16(long) -@ stdcall LocalCountFree16() -@ stdcall LocalHeapSize16() -@ stdcall LockResource16(long) -@ stdcall SelectorAccessRights16(long long long) -@ stdcall SetSelectorBase(long long) -@ stdcall SetSelectorLimit16(long long) -@ stdcall SizeofResource16(long long) -@ stdcall WinExec16(str long) +@ stdcall -i386 _lclose16(long) krnl386.exe16._lclose16 +@ stdcall -i386 AllocCStoDSAlias16(long) krnl386.exe16.AllocCStoDSAlias16 +@ stdcall -i386 AllocSelectorArray16(long) krnl386.exe16.AllocSelectorArray16 +@ stdcall -i386 ConvertDialog32To16(ptr long ptr) krnl386.exe16.ConvertDialog32To16 +@ stdcall -i386 FarGetOwner16(long) krnl386.exe16.FarGetOwner16 +@ stdcall -i386 FarSetOwner16(long long) krnl386.exe16.FarSetOwner16 +@ stdcall -i386 FindResource16(long str str) krnl386.exe16.FindResource16 +@ stdcall -i386 FreeResource16(long) krnl386.exe16.FreeResource16 +@ stdcall -i386 FreeSelector16(long) krnl386.exe16.FreeSelector16 +@ stdcall -i386 GetCurrentPDB16() krnl386.exe16.GetCurrentPDB16 +@ stdcall -i386 GetCurrentTask() krnl386.exe16.GetCurrentTask +@ stdcall -i386 GetDOSEnvironment16() krnl386.exe16.GetDOSEnvironment16 +@ stdcall -i386 GetExePtr(long) krnl386.exe16.GetExePtr +@ stdcall -i386 GetExpWinVer16(long) krnl386.exe16.GetExpWinVer16 +@ stdcall -i386 GetModuleHandle16(str) krnl386.exe16.GetModuleHandle16 +@ stdcall -i386 GetSelectorLimit16(long) krnl386.exe16.GetSelectorLimit16 +@ stdcall -i386 GlobalDOSAlloc16(long) krnl386.exe16.GlobalDOSAlloc16 +@ stdcall -i386 GlobalDOSFree16(long) krnl386.exe16.GlobalDOSFree16 +@ stdcall -i386 GlobalFlags16(long) krnl386.exe16.GlobalFlags16 +@ stdcall -i386 GlobalReAlloc16(long long long) krnl386.exe16.GlobalReAlloc16 +@ stdcall -i386 InitTask16(ptr) krnl386.exe16.InitTask16 +@ stdcall -i386 IsBadReadPtr16(long long) krnl386.exe16.IsBadReadPtr16 +@ stdcall -i386 IsTask16(long) krnl386.exe16.IsTask16 +@ stdcall -i386 LoadModule16(str long) krnl386.exe16.LoadModule16 +@ stdcall -i386 LoadResource16(long long) krnl386.exe16.LoadResource16 +@ stdcall -i386 LocalAlloc16(long long) krnl386.exe16.LocalAlloc16 +@ stdcall -i386 LocalInit16(long long long) krnl386.exe16.LocalInit16 +@ stdcall -i386 LocalLock16(long) krnl386.exe16.LocalLock16 +@ stdcall -i386 LocalUnlock16(long) krnl386.exe16.LocalUnlock16 +@ stdcall -i386 LocalReAlloc16(long long long) krnl386.exe16.LocalReAlloc16 +@ stdcall -i386 LocalFree16(long) krnl386.exe16.LocalFree16 +@ stdcall -i386 LocalSize16(long) krnl386.exe16.LocalSize16 +@ stdcall -i386 LocalCompact16(long) krnl386.exe16.LocalCompact16 +@ stdcall -i386 LocalCountFree16() krnl386.exe16.LocalCountFree16 +@ stdcall -i386 LocalHeapSize16() krnl386.exe16.LocalHeapSize16 +@ stdcall -i386 LockResource16(long) krnl386.exe16.LockResource16 +@ stdcall -i386 SelectorAccessRights16(long long long) krnl386.exe16.SelectorAccessRights16 +@ stdcall -i386 SetSelectorBase(long long) krnl386.exe16.SetSelectorBase +@ stdcall -i386 SetSelectorLimit16(long long) krnl386.exe16.SetSelectorLimit16 +@ stdcall -i386 SizeofResource16(long long) krnl386.exe16.SizeofResource16 +@ stdcall -i386 WinExec16(str long) krnl386.exe16.WinExec16 ################################################################ # Wine internal extensions @@ -1258,11 +1258,11 @@ # All functions must be prefixed with '__wine_' (for internal functions) # or 'wine_' (for user-visible functions) to avoid namespace conflicts. -# 16-bit relays +# 16-bit relays (for backwards compatibility) @ cdecl -i386 __wine_dll_register_16(ptr str) @ cdecl -i386 __wine_dll_unregister_16(ptr) -@ varargs -i386 -private __wine_call_from_16_regs() -@ cdecl -i386 __wine_emulate_instruction(ptr ptr) +@ stub -i386 __wine_call_from_16_regs +@ cdecl -i386 __wine_emulate_instruction(ptr ptr) krnl386.exe16.__wine_emulate_instruction # Unix files @ cdecl wine_get_unix_file_name(wstr) diff --git a/dlls/kernel32/kernel_main.c b/dlls/kernel32/kernel_main.c index f0b04438124..28bb97dce3d 100644 --- a/dlls/kernel32/kernel_main.c +++ b/dlls/kernel32/kernel_main.c @@ -33,10 +33,8 @@ #include "winternl.h" #include "wownt32.h" -#include "wine/winbase16.h" #include "wine/library.h" #include "kernel_private.h" -#include "kernel16_private.h" #include "console_private.h" #include "wine/debug.h" @@ -46,32 +44,6 @@ extern int CDECL __wine_set_signal_handler(unsigned, int (*)(unsigned)); static ULONGLONG server_start_time; -/*********************************************************************** - * KERNEL thread initialisation routine - */ -static void thread_attach(void) -{ - /* allocate the 16-bit stack (FIXME: should be done lazily) */ - HGLOBAL16 hstack = WOWGlobalAlloc16( GMEM_FIXED, 0x10000 ); - kernel_get_thread_data()->stack_sel = GlobalHandleToSel16( hstack ); - NtCurrentTeb()->WOW32Reserved = (void *)MAKESEGPTR( kernel_get_thread_data()->stack_sel, - 0x10000 - sizeof(STACK16FRAME) ); - memset( (char *)GlobalLock16(hstack) + 0x10000 - sizeof(STACK16FRAME), 0, sizeof(STACK16FRAME) ); -} - - -/*********************************************************************** - * KERNEL thread finalisation routine - */ -static void thread_detach(void) -{ - /* free the 16-bit stack */ - WOWGlobalFree16( kernel_get_thread_data()->stack_sel ); - NtCurrentTeb()->WOW32Reserved = 0; - if (NtCurrentTeb()->Tib.SubSystemTib) TASK_ExitTask(); -} - - /*********************************************************************** * set_entry_point */ @@ -156,8 +128,6 @@ static BOOL process_attach( HMODULE module ) { /* create the shared heap for broken win95 native dlls */ HeapCreate( HEAP_SHARED, 0, 0 ); - /* setup emulation of protected instructions from 32-bit code */ - RtlAddVectoredExceptionHandler( TRUE, INSTR_vectored_handler ); } #endif @@ -176,10 +146,7 @@ static BOOL process_attach( HMODULE module ) * TBD when not using wineserver handles for console handles */ - /* Create 16-bit task */ - LoadLibrary16( "krnl386.exe" ); - thread_attach(); - TASK_CreateMainTask(); + LoadLibraryA( "krnl386.exe16" ); return TRUE; } @@ -191,13 +158,8 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved ) switch(reason) { case DLL_PROCESS_ATTACH: + DisableThreadLibraryCalls( hinst ); return process_attach( hinst ); - case DLL_THREAD_ATTACH: - thread_attach(); - break; - case DLL_THREAD_DETACH: - thread_detach(); - break; case DLL_PROCESS_DETACH: WritePrivateProfileSectionW( NULL, NULL, NULL ); break; diff --git a/dlls/kernel32/kernel_private.h b/dlls/kernel32/kernel_private.h index df753d7e39e..4b295e7f63e 100644 --- a/dlls/kernel32/kernel_private.h +++ b/dlls/kernel32/kernel_private.h @@ -85,11 +85,6 @@ extern void MODULE_get_binary_info( HANDLE hfile, struct binary_info *info ); extern BOOL NLS_IsUnicodeOnlyLcid(LCID); -/* vxd.c */ -typedef BOOL (WINAPI *DeviceIoProc)(DWORD, LPVOID, DWORD, LPVOID, DWORD, LPDWORD, LPOVERLAPPED); -extern DeviceIoProc VXD_get_proc( HANDLE handle ); -extern HANDLE VXD_Open( LPCWSTR filename, DWORD access, LPSECURITY_ATTRIBUTES sa ); - /* environ.c */ extern void ENV_CopyStartupInformation(void); diff --git a/dlls/kernel32/module.c b/dlls/kernel32/module.c index 76e1b0fbf6d..aaa5551fdb7 100644 --- a/dlls/kernel32/module.c +++ b/dlls/kernel32/module.c @@ -1065,3 +1065,28 @@ FARPROC WINAPI DelayLoadFailureHook( LPCSTR name, LPCSTR function ) RaiseException( EXCEPTION_WINE_STUB, EH_NONCONTINUABLE, 2, args ); return NULL; } + + +#ifdef __i386__ + +/*********************************************************************** + * __wine_dll_register_16 (KERNEL32.@) + * + * No longer used. + */ +void __wine_dll_register_16( const IMAGE_DOS_HEADER *header, const char *file_name ) +{ + ERR( "loading old style 16-bit dll %s no longer supported\n", file_name ); +} + + +/*********************************************************************** + * __wine_dll_unregister_16 (KERNEL32.@) + * + * No longer used. + */ +void __wine_dll_unregister_16( const IMAGE_DOS_HEADER *header ) +{ +} + +#endif diff --git a/dlls/krnl386.exe16/Makefile.in b/dlls/krnl386.exe16/Makefile.in new file mode 100644 index 00000000000..e055628f094 --- /dev/null +++ b/dlls/krnl386.exe16/Makefile.in @@ -0,0 +1,42 @@ +TOPSRCDIR = @top_srcdir@ +TOPOBJDIR = ../.. +SRCDIR = @srcdir@ +VPATH = @srcdir@ +MODULE = krnl386.exe16 +IMPORTS = kernel32 ntdll +EXTRADLLFLAGS = -Wb,--subsystem,win16,--dll-name,kernel +EXTRARCFLAGS = -O res16 + +C_SRCS = \ + atom.c \ + dosmem.c \ + error.c \ + file.c \ + global.c \ + instr.c \ + kernel.c \ + local.c \ + ne_module.c \ + ne_segment.c \ + registry.c \ + relay.c \ + resource.c \ + selector.c \ + snoop.c \ + syslevel.c \ + task.c \ + thunk.c \ + utthunk.c \ + vxd.c \ + wowthunk.c + +RC_SRCS = version.rc + +EXTRA_OBJS = relay16asm.o + +@MAKE_DLL_RULES@ + +relay16asm.o: $(WINEBUILD) + $(WINEBUILD) $(WINEBUILDFLAGS) -o $@ --relay16 + +@DEPENDENCIES@ # everything below this line is overwritten by make depend diff --git a/dlls/kernel32/atom16.c b/dlls/krnl386.exe16/atom.c similarity index 100% rename from dlls/kernel32/atom16.c rename to dlls/krnl386.exe16/atom.c diff --git a/dlls/kernel32/dosmem.c b/dlls/krnl386.exe16/dosmem.c similarity index 100% rename from dlls/kernel32/dosmem.c rename to dlls/krnl386.exe16/dosmem.c diff --git a/dlls/kernel32/error16.c b/dlls/krnl386.exe16/error.c similarity index 100% rename from dlls/kernel32/error16.c rename to dlls/krnl386.exe16/error.c diff --git a/dlls/kernel32/file16.c b/dlls/krnl386.exe16/file.c similarity index 100% rename from dlls/kernel32/file16.c rename to dlls/krnl386.exe16/file.c diff --git a/dlls/kernel32/global16.c b/dlls/krnl386.exe16/global.c similarity index 100% rename from dlls/kernel32/global16.c rename to dlls/krnl386.exe16/global.c diff --git a/dlls/kernel32/instr.c b/dlls/krnl386.exe16/instr.c similarity index 99% rename from dlls/kernel32/instr.c rename to dlls/krnl386.exe16/instr.c index c3aea2d36d8..8fe4e9915ba 100644 --- a/dlls/kernel32/instr.c +++ b/dlls/krnl386.exe16/instr.c @@ -23,8 +23,6 @@ #include "config.h" #include "wine/port.h" -#ifdef __i386__ - #include #include "windef.h" @@ -922,5 +920,3 @@ FARPROC16 WINAPI GetSetKernelDOSProc16( FARPROC16 DosProc ) FIXME("(DosProc=%p): stub\n", DosProc); return NULL; } - -#endif /* __i386__ */ diff --git a/dlls/kernel32/kernel16.c b/dlls/krnl386.exe16/kernel.c similarity index 93% rename from dlls/kernel32/kernel16.c rename to dlls/krnl386.exe16/kernel.c index fabe2d81cfc..b6fbbcbc5a9 100644 --- a/dlls/kernel32/kernel16.c +++ b/dlls/krnl386.exe16/kernel.c @@ -36,6 +36,53 @@ extern DWORD WINAPI GetProcessFlags( DWORD processid ); static DWORD process_dword; +/*********************************************************************** + * KERNEL thread initialisation routine + */ +static void thread_attach(void) +{ + /* allocate the 16-bit stack (FIXME: should be done lazily) */ + HGLOBAL16 hstack = WOWGlobalAlloc16( GMEM_FIXED, 0x10000 ); + kernel_get_thread_data()->stack_sel = GlobalHandleToSel16( hstack ); + NtCurrentTeb()->WOW32Reserved = (void *)MAKESEGPTR( kernel_get_thread_data()->stack_sel, + 0x10000 - sizeof(STACK16FRAME) ); + memset( (char *)GlobalLock16(hstack) + 0x10000 - sizeof(STACK16FRAME), 0, sizeof(STACK16FRAME) ); +} + + +/*********************************************************************** + * KERNEL thread finalisation routine + */ +static void thread_detach(void) +{ + /* free the 16-bit stack */ + WOWGlobalFree16( kernel_get_thread_data()->stack_sel ); + NtCurrentTeb()->WOW32Reserved = 0; + if (NtCurrentTeb()->Tib.SubSystemTib) TASK_ExitTask(); +} + + +/************************************************************************** + * DllMain + */ +BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, LPVOID reserved ) +{ + switch(reason) + { + case DLL_PROCESS_ATTACH: + LoadLibrary16( "krnl386.exe" ); + /* fall through */ + case DLL_THREAD_ATTACH: + thread_attach(); + break; + case DLL_THREAD_DETACH: + thread_detach(); + break; + } + return TRUE; +} + + /************************************************************************** * DllEntryPoint (KERNEL.669) */ @@ -48,6 +95,9 @@ BOOL WINAPI KERNEL_DllEntryPoint( DWORD reasion, HINSTANCE16 inst, WORD ds, if (done) return TRUE; done = 1; + /* setup emulation of protected instructions from 32-bit code */ + if (GetVersion() & 0x80000000) RtlAddVectoredExceptionHandler( TRUE, INSTR_vectored_handler ); + /* Initialize 16-bit thunking entry points */ if (!WOWTHUNK_Init()) return FALSE; @@ -68,6 +118,7 @@ BOOL WINAPI KERNEL_DllEntryPoint( DWORD reasion, HINSTANCE16 inst, WORD ds, /* Initialize KERNEL.THHOOK */ TASK_InstallTHHook(MapSL((SEGPTR)GetProcAddress16( inst, (LPCSTR)332 ))); + TASK_CreateMainTask(); /* Initialize the real-mode selector entry points */ #define SET_ENTRY_POINT( num, addr ) \ diff --git a/dlls/kernel32/kernel16_private.h b/dlls/krnl386.exe16/kernel16_private.h similarity index 99% rename from dlls/kernel32/kernel16_private.h rename to dlls/krnl386.exe16/kernel16_private.h index 05094712455..4c739a57926 100644 --- a/dlls/kernel32/kernel16_private.h +++ b/dlls/krnl386.exe16/kernel16_private.h @@ -290,7 +290,6 @@ static inline struct kernel_thread_data *kernel_get_thread_data(void) return (struct kernel_thread_data *)NtCurrentTeb()->SystemReserved1; } -#ifdef __i386__ #define DEFINE_REGS_ENTRYPOINT( name, args ) \ __ASM_GLOBAL_FUNC( name, \ ".byte 0x68\n\t" /* pushl $__regs_func */ \ @@ -298,6 +297,5 @@ static inline struct kernel_thread_data *kernel_get_thread_data(void) ".byte 0x6a," #args "\n\t" /* pushl $args */ \ "call " __ASM_NAME("__wine_call_from_32_regs") "\n\t" \ "ret $(4*" #args ")" ) /* fake ret to make copy protections happy */ -#endif #endif /* __WINE_KERNEL16_PRIVATE_H */ diff --git a/dlls/kernel32/krnl386.exe.spec b/dlls/krnl386.exe16/krnl386.exe16.spec similarity index 72% rename from dlls/kernel32/krnl386.exe.spec rename to dlls/krnl386.exe16/krnl386.exe16.spec index 60560c5a242..8e08ff59bf3 100644 --- a/dlls/kernel32/krnl386.exe.spec +++ b/dlls/krnl386.exe16/krnl386.exe16.spec @@ -527,3 +527,207 @@ # Win95 krnl386.exe also exports ordinals 802-864, # however, those seem to be only callback stubs that are # never called directly by other modules ... + +################################################################ +# 32-bit version of the various 16-bit functions exported by kernel32 +# +@ stdcall -arch=win32 -register VxDCall0(long) VxDCall +@ stdcall -arch=win32 -register VxDCall1(long) VxDCall +@ stdcall -arch=win32 -register VxDCall2(long) VxDCall +@ stdcall -arch=win32 -register VxDCall3(long) VxDCall +@ stdcall -arch=win32 -register VxDCall4(long) VxDCall +@ stdcall -arch=win32 -register VxDCall5(long) VxDCall +@ stdcall -arch=win32 -register VxDCall6(long) VxDCall +@ stdcall -arch=win32 -register VxDCall7(long) VxDCall +@ stdcall -arch=win32 -register VxDCall8(long) VxDCall +@ stdcall -arch=win32 k32CharToOemA(str ptr) +@ stdcall -arch=win32 k32CharToOemBuffA(str ptr long) +@ stdcall -arch=win32 k32OemToCharA(ptr ptr) +@ stdcall -arch=win32 k32OemToCharBuffA(ptr ptr long) +@ stdcall -arch=win32 k32LoadStringA(long long ptr long) +@ varargs -arch=win32 k32wsprintfA(str str) +@ stdcall -arch=win32 k32wvsprintfA(ptr str ptr) +@ stdcall -arch=win32 -register CommonUnimpStub() +@ stdcall -arch=win32 GetProcessDword16(long long) +@ stdcall -arch=win32 DosFileHandleToWin32Handle(long) +@ stdcall -arch=win32 Win32HandleToDosFileHandle(long) +@ stdcall -arch=win32 DisposeLZ32Handle(long) +@ stdcall -arch=win32 GlobalAlloc16(long long) +@ stdcall -arch=win32 GlobalLock16(long) +@ stdcall -arch=win32 GlobalUnlock16(long) +@ stdcall -arch=win32 GlobalFix16(long) +@ stdcall -arch=win32 GlobalUnfix16(long) +@ stdcall -arch=win32 GlobalWire16(long) +@ stdcall -arch=win32 GlobalUnWire16(long) +@ stdcall -arch=win32 GlobalFree16(long) +@ stdcall -arch=win32 GlobalSize16(long) +@ stdcall -arch=win32 HouseCleanLogicallyDeadHandles() +@ stdcall -arch=win32 GetWin16DOSEnv() +@ stdcall -arch=win32 LoadLibrary16(str) +@ stdcall -arch=win32 FreeLibrary16(long) +@ stdcall -arch=win32 GetProcAddress16(long str) WIN32_GetProcAddress16 +@ stdcall -arch=win32 -register AllocMappedBuffer() +@ stdcall -arch=win32 -register FreeMappedBuffer() +@ stdcall -arch=win32 -register OT_32ThkLSF() +@ stdcall -arch=win32 ThunkInitLSF(long str long str str) +@ stdcall -arch=win32 -register LogApiThkLSF(str) +@ stdcall -arch=win32 ThunkInitLS(long str long str str) +@ stdcall -arch=win32 -register LogApiThkSL(str) +@ stdcall -arch=win32 -register Common32ThkLS() +@ stdcall -arch=win32 ThunkInitSL(long str long str str) +@ stdcall -arch=win32 -register LogCBThkSL(str) +@ stdcall -arch=win32 ReleaseThunkLock(ptr) +@ stdcall -arch=win32 RestoreThunkLock(long) +@ stdcall -arch=win32 -register W32S_BackTo32() +@ stdcall -arch=win32 GetThunkBuff() +@ stdcall -arch=win32 GetThunkStuff(str str) +@ stdcall -arch=win32 K32WOWCallback16(long long) +@ stdcall -arch=win32 K32WOWCallback16Ex(ptr long long ptr ptr) +@ stdcall -arch=win32 K32WOWGetVDMPointer(long long long) +@ stdcall -arch=win32 K32WOWHandle32(long long) +@ stdcall -arch=win32 K32WOWHandle16(long long) +@ stdcall -arch=win32 K32WOWGlobalAlloc16(long long) +@ stdcall -arch=win32 K32WOWGlobalLock16(long) +@ stdcall -arch=win32 K32WOWGlobalUnlock16(long) +@ stdcall -arch=win32 K32WOWGlobalFree16(long) +@ stdcall -arch=win32 K32WOWGlobalAllocLock16(long long ptr) +@ stdcall -arch=win32 K32WOWGlobalUnlockFree16(long) +@ stdcall -arch=win32 K32WOWGlobalLockSize16(long ptr) +@ stdcall -arch=win32 K32WOWYield16() +@ stdcall -arch=win32 K32WOWDirectedYield16(long) +@ stdcall -arch=win32 K32WOWGetVDMPointerFix(long long long) +@ stdcall -arch=win32 K32WOWGetVDMPointerUnfix(long) +@ stdcall -arch=win32 K32WOWGetDescriptor(long long) +@ stdcall -arch=win32 _KERNEL32_86(ptr) +@ stdcall -arch=win32 SSOnBigStack() +@ varargs -arch=win32 SSCall(long long ptr) +@ stdcall -arch=win32 -register FT_PrologPrime() +@ stdcall -arch=win32 -register QT_ThunkPrime() +@ stdcall -arch=win32 PK16FNF(ptr) +@ stdcall -arch=win32 GetPK16SysVar() +@ stdcall -arch=win32 GetpWin16Lock(ptr) +@ stdcall -arch=win32 _CheckNotSysLevel(ptr) +@ stdcall -arch=win32 _ConfirmSysLevel(ptr) +@ stdcall -arch=win32 _ConfirmWin16Lock() +@ stdcall -arch=win32 _EnterSysLevel(ptr) +@ stdcall -arch=win32 _LeaveSysLevel(ptr) +@ stdcall -arch=win32 _KERNEL32_99(long) +@ stdcall -arch=win32 _KERNEL32_100(long long long) + +@ stdcall -arch=win32 AllocSLCallback(ptr ptr) +@ stdcall -arch=win32 -norelay FT_Exit0() +@ stdcall -arch=win32 -norelay FT_Exit12() +@ stdcall -arch=win32 -norelay FT_Exit16() +@ stdcall -arch=win32 -norelay FT_Exit20() +@ stdcall -arch=win32 -norelay FT_Exit24() +@ stdcall -arch=win32 -norelay FT_Exit28() +@ stdcall -arch=win32 -norelay FT_Exit32() +@ stdcall -arch=win32 -norelay FT_Exit36() +@ stdcall -arch=win32 -norelay FT_Exit40() +@ stdcall -arch=win32 -norelay FT_Exit44() +@ stdcall -arch=win32 -norelay FT_Exit48() +@ stdcall -arch=win32 -norelay FT_Exit4() +@ stdcall -arch=win32 -norelay FT_Exit52() +@ stdcall -arch=win32 -norelay FT_Exit56() +@ stdcall -arch=win32 -norelay FT_Exit8() +@ stdcall -arch=win32 -register FT_Prolog() +@ stdcall -arch=win32 -register FT_Thunk() +@ stdcall -arch=win32 FreeSLCallback(long) +@ stdcall -arch=win32 Get16DLLAddress(long str) +@ stdcall -arch=win32 -register K32Thk1632Epilog() +@ stdcall -arch=win32 -register K32Thk1632Prolog() +@ stdcall -arch=win32 -norelay MapHInstLS() +@ stdcall -arch=win32 -norelay MapHInstLS_PN() +@ stdcall -arch=win32 -norelay MapHInstSL() +@ stdcall -arch=win32 -norelay MapHInstSL_PN() +@ stdcall -arch=win32 MapHModuleLS(long) +@ stdcall -arch=win32 MapHModuleSL(long) +@ stdcall -arch=win32 MapLS(ptr) +@ stdcall -arch=win32 MapSL(long) +@ stdcall -arch=win32 MapSLFix(long) +@ stdcall -arch=win32 PrivateFreeLibrary(long) +@ stdcall -arch=win32 PrivateLoadLibrary(str) +@ stdcall -arch=win32 -register QT_Thunk() +@ stdcall -arch=win32 -norelay SMapLS() +@ stdcall -arch=win32 -norelay SMapLS_IP_EBP_12() +@ stdcall -arch=win32 -norelay SMapLS_IP_EBP_16() +@ stdcall -arch=win32 -norelay SMapLS_IP_EBP_20() +@ stdcall -arch=win32 -norelay SMapLS_IP_EBP_24() +@ stdcall -arch=win32 -norelay SMapLS_IP_EBP_28() +@ stdcall -arch=win32 -norelay SMapLS_IP_EBP_32() +@ stdcall -arch=win32 -norelay SMapLS_IP_EBP_36() +@ stdcall -arch=win32 -norelay SMapLS_IP_EBP_40() +@ stdcall -arch=win32 -norelay SMapLS_IP_EBP_8() +@ stdcall -arch=win32 -norelay SUnMapLS() +@ stdcall -arch=win32 -norelay SUnMapLS_IP_EBP_12() +@ stdcall -arch=win32 -norelay SUnMapLS_IP_EBP_16() +@ stdcall -arch=win32 -norelay SUnMapLS_IP_EBP_20() +@ stdcall -arch=win32 -norelay SUnMapLS_IP_EBP_24() +@ stdcall -arch=win32 -norelay SUnMapLS_IP_EBP_28() +@ stdcall -arch=win32 -norelay SUnMapLS_IP_EBP_32() +@ stdcall -arch=win32 -norelay SUnMapLS_IP_EBP_36() +@ stdcall -arch=win32 -norelay SUnMapLS_IP_EBP_40() +@ stdcall -arch=win32 -norelay SUnMapLS_IP_EBP_8() +@ stdcall -arch=win32 ThunkConnect32(ptr str str str ptr ptr) +@ stdcall -arch=win32 UTRegister(long str str str ptr ptr ptr) +@ stdcall -arch=win32 UTUnRegister(long) +@ stdcall -arch=win32 UnMapLS(long) +@ stdcall -arch=win32 -norelay UnMapSLFixArray(long long) +@ stdcall -arch=win32 _lclose16(long) + +################################################################ +# 16-bit symbols not available from kernel32 but used by other 16-bit dlls +# +@ stdcall -arch=win32 AllocCStoDSAlias16(long) +@ stdcall -arch=win32 AllocSelectorArray16(long) +@ stdcall -arch=win32 ConvertDialog32To16(ptr long ptr) +@ stdcall -arch=win32 FarGetOwner16(long) +@ stdcall -arch=win32 FarSetOwner16(long long) +@ stdcall -arch=win32 FindResource16(long str str) +@ stdcall -arch=win32 FreeResource16(long) +@ stdcall -arch=win32 FreeSelector16(long) +@ stdcall -arch=win32 GetCurrentPDB16() +@ stdcall -arch=win32 GetCurrentTask() +@ stdcall -arch=win32 GetDOSEnvironment16() +@ stdcall -arch=win32 GetExePtr(long) +@ stdcall -arch=win32 GetExpWinVer16(long) +@ stdcall -arch=win32 GetModuleHandle16(str) +@ stdcall -arch=win32 GetSelectorLimit16(long) +@ stdcall -arch=win32 GlobalDOSAlloc16(long) +@ stdcall -arch=win32 GlobalDOSFree16(long) +@ stdcall -arch=win32 GlobalFlags16(long) +@ stdcall -arch=win32 GlobalReAlloc16(long long long) +@ stdcall -arch=win32 InitTask16(ptr) +@ stdcall -arch=win32 IsBadReadPtr16(long long) +@ stdcall -arch=win32 IsTask16(long) +@ stdcall -arch=win32 LoadModule16(str long) +@ stdcall -arch=win32 LoadResource16(long long) +@ stdcall -arch=win32 LocalAlloc16(long long) +@ stdcall -arch=win32 LocalInit16(long long long) +@ stdcall -arch=win32 LocalLock16(long) +@ stdcall -arch=win32 LocalUnlock16(long) +@ stdcall -arch=win32 LocalReAlloc16(long long long) +@ stdcall -arch=win32 LocalFree16(long) +@ stdcall -arch=win32 LocalSize16(long) +@ stdcall -arch=win32 LocalCompact16(long) +@ stdcall -arch=win32 LocalCountFree16() +@ stdcall -arch=win32 LocalHeapSize16() +@ stdcall -arch=win32 LockResource16(long) +@ stdcall -arch=win32 SelectorAccessRights16(long long long) +@ stdcall -arch=win32 SetSelectorBase(long long) +@ stdcall -arch=win32 SetSelectorLimit16(long long) +@ stdcall -arch=win32 SizeofResource16(long long) +@ stdcall -arch=win32 WinExec16(str long) + +################################################################ +# Wine internal extensions +# +# All functions must be prefixed with '__wine_' (for internal functions) +# or 'wine_' (for user-visible functions) to avoid namespace conflicts. + +# 16-bit relays +@ cdecl -arch=win32 -private __wine_emulate_instruction(ptr ptr) + +# VxDs +@ cdecl -arch=win32 -private __wine_vxd_open(wstr long ptr) +@ cdecl -arch=win32 -private __wine_vxd_get_proc(long) diff --git a/dlls/kernel32/local16.c b/dlls/krnl386.exe16/local.c similarity index 100% rename from dlls/kernel32/local16.c rename to dlls/krnl386.exe16/local.c diff --git a/dlls/kernel32/ne_module.c b/dlls/krnl386.exe16/ne_module.c similarity index 99% rename from dlls/kernel32/ne_module.c rename to dlls/krnl386.exe16/ne_module.c index 51e2eb5ee22..82e45769444 100644 --- a/dlls/kernel32/ne_module.c +++ b/dlls/krnl386.exe16/ne_module.c @@ -90,7 +90,6 @@ static HMODULE16 NE_GetModuleByFilename( LPCSTR name ); /* patch all the flat cs references of the code segment if necessary */ static inline void patch_code_segment( NE_MODULE *pModule ) { -#ifdef __i386__ int i; CALLFROM16 *call; SEGTABLEENTRY *pSeg = NE_SEG_TABLE( pModule ); @@ -112,7 +111,6 @@ static inline void patch_code_segment( NE_MODULE *pModule ) if (TRACE_ON(relay)) /* patch relay functions to all point to relay_call_from_16 */ for (i = 0; call[i].pushl == 0x68; i++) call[i].relay = relay_call_from_16; -#endif } @@ -2168,8 +2166,6 @@ void WINAPI MapHInstSL16( CONTEXT86 *context ) context->Eax = (DWORD)MapHModuleSL( context->Eax ); } -#ifdef __i386__ - /*************************************************************************** * MapHInstLS (KERNEL32.@) */ @@ -2205,5 +2201,3 @@ __ASM_STDCALL_FUNC( MapHInstSL_PN, 0, "pushl %eax\n\t" "call " __ASM_NAME("MapHModuleSL") __ASM_STDCALL(4) "\n" "1:\tret" ) - -#endif /* __i386__ */ diff --git a/dlls/kernel32/ne_segment.c b/dlls/krnl386.exe16/ne_segment.c similarity index 100% rename from dlls/kernel32/ne_segment.c rename to dlls/krnl386.exe16/ne_segment.c diff --git a/dlls/kernel32/registry16.c b/dlls/krnl386.exe16/registry.c similarity index 100% rename from dlls/kernel32/registry16.c rename to dlls/krnl386.exe16/registry.c diff --git a/dlls/kernel32/relay16.c b/dlls/krnl386.exe16/relay.c similarity index 100% rename from dlls/kernel32/relay16.c rename to dlls/krnl386.exe16/relay.c diff --git a/dlls/kernel32/resource16.c b/dlls/krnl386.exe16/resource.c similarity index 100% rename from dlls/kernel32/resource16.c rename to dlls/krnl386.exe16/resource.c diff --git a/dlls/kernel32/selector.c b/dlls/krnl386.exe16/selector.c similarity index 99% rename from dlls/kernel32/selector.c rename to dlls/krnl386.exe16/selector.c index 2142720fb79..3d04d6e113e 100644 --- a/dlls/kernel32/selector.c +++ b/dlls/krnl386.exe16/selector.c @@ -89,11 +89,9 @@ WORD WINAPI FreeSelector16( WORD sel ) wine_ldt_get_entry( sel, &entry ); if (wine_ldt_is_empty( &entry )) return sel; /* error */ -#ifdef __i386__ /* Check if we are freeing current %fs selector */ if (!((wine_get_fs() ^ sel) & ~3)) WARN("Freeing %%fs selector (%04x), not good.\n", wine_get_fs() ); -#endif /* __i386__ */ wine_ldt_free_entries( sel, 1 ); return 0; } @@ -523,7 +521,6 @@ LPVOID WINAPI MapSLFix( SEGPTR sptr ) return MapSL(sptr); } -#ifdef __i386__ /*********************************************************************** * UnMapSLFixArray (KERNEL32.@) @@ -618,5 +615,3 @@ DEFINE_SUnMapLS(28) DEFINE_SUnMapLS(32) DEFINE_SUnMapLS(36) DEFINE_SUnMapLS(40) - -#endif /* __i386__ */ diff --git a/dlls/kernel32/snoop16.c b/dlls/krnl386.exe16/snoop.c similarity index 97% rename from dlls/kernel32/snoop16.c rename to dlls/krnl386.exe16/snoop.c index c6c30322c78..42fa8d18a69 100644 --- a/dlls/kernel32/snoop16.c +++ b/dlls/krnl386.exe16/snoop.c @@ -36,8 +36,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(snoop); -#ifdef __i386__ - #include "pshpack1.h" static void WINAPI SNOOP16_Entry(FARPROC proc, LPBYTE args, CONTEXT86 *context); @@ -343,13 +341,3 @@ static void WINAPI SNOOP16_Return(FARPROC proc, LPBYTE args, CONTEXT86 *context) HIWORD(ret->origreturn),LOWORD(ret->origreturn)); ret->origreturn = NULL; /* mark as empty */ } -#else /* !__i386__ */ -void SNOOP16_RegisterDLL(HMODULE16 hModule,LPCSTR name) { - if (!TRACE_ON(snoop)) return; - FIXME("snooping works only on i386 for now.\n"); -} - -FARPROC16 SNOOP16_GetProcAddress16(HMODULE16 hmod,DWORD ordinal,FARPROC16 origfun) { - return origfun; -} -#endif /* !__i386__ */ diff --git a/dlls/kernel32/syslevel.c b/dlls/krnl386.exe16/syslevel.c similarity index 99% rename from dlls/kernel32/syslevel.c rename to dlls/krnl386.exe16/syslevel.c index b37ec7bf9e9..88b7ea94596 100644 --- a/dlls/kernel32/syslevel.c +++ b/dlls/krnl386.exe16/syslevel.c @@ -108,9 +108,7 @@ VOID WINAPI _EnterSysLevel(SYSLEVEL *lock) TRACE("(%p, level %d): thread %x count after %d\n", lock, lock->level, GetCurrentThreadId(), thread_data->sys_count[lock->level] ); -#ifdef __i386__ if (lock == &Win16Mutex) CallTo16_TebSelector = wine_get_fs(); -#endif } /************************************************************************ diff --git a/dlls/kernel32/task.c b/dlls/krnl386.exe16/task.c similarity index 100% rename from dlls/kernel32/task.c rename to dlls/krnl386.exe16/task.c diff --git a/dlls/kernel32/thunk.c b/dlls/krnl386.exe16/thunk.c similarity index 99% rename from dlls/kernel32/thunk.c rename to dlls/krnl386.exe16/thunk.c index fc9c3b4591e..2f8562c8663 100644 --- a/dlls/kernel32/thunk.c +++ b/dlls/krnl386.exe16/thunk.c @@ -31,8 +31,6 @@ # include #endif -#ifdef __i386__ - #include "windef.h" #include "winbase.h" #include "winerror.h" @@ -2538,5 +2536,3 @@ DWORD WINAPIV WOW16Call(WORD x, WORD y, WORD z, VA_LIST16 args) DPRINTF(") calling address was 0x%08x\n",calladdr); return 0; } - -#endif /* __i386__ */ diff --git a/dlls/kernel32/utthunk.c b/dlls/krnl386.exe16/utthunk.c similarity index 99% rename from dlls/kernel32/utthunk.c rename to dlls/krnl386.exe16/utthunk.c index d3333a2225c..a1889fa3502 100644 --- a/dlls/kernel32/utthunk.c +++ b/dlls/krnl386.exe16/utthunk.c @@ -18,8 +18,6 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#ifdef __i386__ - #include #include "wine/winbase16.h" @@ -325,5 +323,3 @@ WORD WINAPI UTInit16( DWORD x1, DWORD x2, DWORD x3, DWORD x4 ) FIXME("(%08x, %08x, %08x, %08x): stub\n", x1, x2, x3, x4 ); return 0; } - -#endif /* __i386__ */ diff --git a/dlls/kernel32/version16.rc b/dlls/krnl386.exe16/version.rc similarity index 100% rename from dlls/kernel32/version16.rc rename to dlls/krnl386.exe16/version.rc diff --git a/dlls/kernel32/vxd.c b/dlls/krnl386.exe16/vxd.c similarity index 97% rename from dlls/kernel32/vxd.c rename to dlls/krnl386.exe16/vxd.c index d7b05a8c895..a4208051064 100644 --- a/dlls/kernel32/vxd.c +++ b/dlls/krnl386.exe16/vxd.c @@ -134,7 +134,7 @@ static HANDLE open_vxd_handle( LPCWSTR name ) } /* retrieve the DeviceIoControl function for a Vxd given a file handle */ -DeviceIoProc VXD_get_proc( HANDLE handle ) +DeviceIoProc __wine_vxd_get_proc( HANDLE handle ) { DeviceIoProc ret = NULL; int status, i; @@ -171,7 +171,7 @@ done: /* load a VxD and return a file handle to it */ -HANDLE VXD_Open( LPCWSTR filenameW, DWORD access, SECURITY_ATTRIBUTES *sa ) +HANDLE __wine_vxd_open( LPCWSTR filenameW, DWORD access, SECURITY_ATTRIBUTES *sa ) { static const WCHAR dotVxDW[] = {'.','v','x','d',0}; int i; @@ -179,12 +179,6 @@ HANDLE VXD_Open( LPCWSTR filenameW, DWORD access, SECURITY_ATTRIBUTES *sa ) HMODULE module; WCHAR *p, name[16]; - if (!(GetVersion() & 0x80000000)) /* there are no VxDs on NT */ - { - SetLastError( ERROR_FILE_NOT_FOUND ); - return 0; - } - /* normalize the filename */ if (strlenW( filenameW ) >= sizeof(name)/sizeof(WCHAR) - 4 || diff --git a/dlls/kernel32/wowthunk.c b/dlls/krnl386.exe16/wowthunk.c similarity index 98% rename from dlls/kernel32/wowthunk.c rename to dlls/krnl386.exe16/wowthunk.c index 5dbb4eeab36..6b2437375ed 100644 --- a/dlls/kernel32/wowthunk.c +++ b/dlls/krnl386.exe16/wowthunk.c @@ -37,9 +37,6 @@ #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(thunk); - -#ifdef __i386__ - WINE_DECLARE_DEBUG_CHANNEL(relay); WINE_DECLARE_DEBUG_CHANNEL(snoop); @@ -301,16 +298,6 @@ static DWORD vm86_handler( EXCEPTION_RECORD *record, EXCEPTION_REGISTRATION_RECO } -#else /* __i386__ */ - -BOOL WOWTHUNK_Init(void) -{ - return TRUE; -} - -#endif /* __i386__ */ - - /* * 32-bit WOW routines (in WOW32, but actually forwarded to KERNEL32) */ @@ -535,7 +522,6 @@ WORD WINAPI K32WOWHandle16( HANDLE handle, WOW_HANDLE_TYPE type ) BOOL WINAPI K32WOWCallback16Ex( DWORD vpfn16, DWORD dwFlags, DWORD cbArgs, LPVOID pArgs, LPDWORD pdwRetCode ) { -#ifdef __i386__ /* * Arguments must be prepared in the correct order by the caller * (both for PASCAL and CDECL calling convention), so we simply @@ -674,9 +660,6 @@ BOOL WINAPI K32WOWCallback16Ex( DWORD vpfn16, DWORD dwFlags, SYSLEVEL_CheckNotLevel( 2 ); } } -#else - assert(0); /* cannot call to 16-bit on non-Intel architectures */ -#endif /* __i386__ */ return TRUE; /* success */ }