Windows 10 Compatibility for Windows XP/2003 (WIP) - extras for KERNEL32.DLL
kernel32-extras
Update 2020/12/03 New main page Wine-on-Windows
Update 2020/12/02 Several applications do not work and crash with The application failed to initialize properly 0xc0000142) - has anyone an idea?
Purpose
Implementation of some KERNEL32.DLL functions, available in Windows versions released after Windows XP/2003, to get software to that is compatible with Windows 2003R2/Vista/2008/2008R2/7/8/8.1/2016/10/2019 to run in Windows XP/2003, where the latest status can be seen in the table under Status & History.
You're welcome to contribute to speed this process up.
Status & History
The current implementation of C code compiles and links fine with the existing KERNEL32.DLL code, but is a work in progress.
Function | Status | Functionality | Last updated |
---|---|---|---|
RunOnceExecuteOnce | Implemented | redirected to NTDLL.DLL | 2020/12/02 |
RunOnceComplete | Implemented | redirected to NTDLL.DLL | 2020/12/02 |
InitializeConditionVariable | Implemented | redirected to NTDLL.DLL | 2020/12/01 |
AcquireSRWLockExclusive | Implemented | redirected to NTDLL.DLL | 2020/12/01 |
AcquireSRWLockShared | Implemented | redirected to NTDLL.DLL | 2020/12/01 |
TryAcquireSRWLockExclusive | Implemented | redirected to NTDLL.DLL | 2020/12/01 |
ReleaseSRWLockExclusive | Implemented | redirected to NTDLL.DLL | 2020/12/01 |
ReleaseSRWLockShared | Implemented | redirected to NTDLL.DLL | 2020/12/01 |
InitializeSRWLock | Implemented | redirected to NTDLL.DLL | 2020/12/01 |
InitializeCriticalSectionEx | Implemented | redirected to NTDLL.DLL | 2020/12/01 |
WakeConditionVariable | Implemented | redirected to NTDLL.DLL | 2020/12/01 |
WakeAllConditionVariable | Implemented | redirected to NTDLL.DLL | 2020/12/01 |
InitializeConditionVariable | Implemented | redirected to NTDLL.DLL | 2020/12/01 |
SetErrorMode | Implemented | Microsoft - already available in code, just added | 2020/11/28 |
GetErrorMode | Implemented | Microsoft - already available in code, just added | 2020/11/28 |
InitOnceExecuteOnce | Missing | Needed by explorer.exe |
2020/11/24 |
DecodePointer | Tested | redirected to NTDLL.DLL, see kernel32-obfuscated-pointers | 2020/11/28 |
EncodePointer | Tested | redirected to in NTDLL.DLL, see kernel32-obfuscated-pointers | 2020/11/28 |
GetFinalPathNameByHandleA | Tested | mofeyi implementation for VOLUME_NAME_NT VOLUME_NAME_DOS VOLUME_NAME_GUID VOLUME_NAME_NONE flags |
2020/11/28 |
GetFinalPathNameByHandleW | Tested | mofeyi implementation for VOLUME_NAME_NT VOLUME_NAME_DOS VOLUME_NAME_GUID VOLUME_NAME_NONE flags |
2020/11/28 |
GetTickCount64 | Tested | old Wine | 2020/11/24 |
InitOnceExecuteOnce | Missing | Needed by explorer.exe |
2020/11/24 |
InitOnceBeginInitialize | Missing | Needed by explorer.exe |
2020/11/24 |
InitOnceExecuteOnce | Missing | Needed by explorer.exe |
2020/11/24 |
InitOnceComplete | Missing | Needed by explorer.exe |
2020/11/24 |
GetSystemTimePreciseAsFileTime | Missing | Needed by explorer.exe |
2020/11/24 |
CopyFile2 | Missing | Needed by explorer.exe |
2020/11/24 |
GetLocaleInfoEx | Missing | Needed by explorer.exe |
2020/11/24 |
LCMapStringEx | Missing | Needed by explorer.exe |
2020/11/24 |
SubmitThreadpoolWork | Missing | Needed by explorer.exe |
2020/11/24 |
CreateThreadpoolWork | Missing | Needed by explorer.exe |
2020/11/24 |
FreeLibraryWhenCallbackReturns | Missing | Needed by explorer.exe |
2020/11/24 |
CloseThreadpoolWork | Missing | Needed by explorer.exe |
2020/11/24 |
CheckElevationEnabled | Missing | Needed by explorer.exe |
2020/11/24 |
CheckElevation | Missing | Needed by explorer.exe |
2020/11/24 |
CreateThreadpoolWork | Missing | Needed by explorer.exe |
2020/11/24 |
CreateThreadpoolWait | Missing | Needed by explorer.exe |
2020/11/24 |
SubmitThreadpoolWork | Missing | Needed by explorer.exe |
2020/11/24 |
WaitForThreadpoolWaitCallbacks | Missing | Needed by explorer.exe |
2020/11/24 |
CloseThreadpoolWait | Missing | Needed by explorer.exe |
2020/11/24 |
SetThreadpoolWait | Missing | Needed by explorer.exe |
2020/11/24 |
GetThreadUILanguage | Missing | Needed by explorer.exe |
2020/11/24 |
GetProcessMitigationPolicy | Missing | Needed by explorer.exe |
2020/11/24 |
GetDateFormatEx | Missing | Needed by explorer.exe |
2020/11/24 |
GetTimeFormatEx | Missing | Needed by explorer.exe |
2020/11/24 |
SHExpandEnvironmentStringsW | Missing | Needed by explorer.exe |
2020/11/24 |
GetProductInfo | Missing | Needed by explorer.exe |
2020/11/24 |
GetOsSafeBootMode | Missing | Needed by explorer.exe |
2020/11/24 |
GetDynamicTimeZoneInformation | Missing | Needed by explorer.exe |
2020/11/24 |
SetProcessDEPPolicy | Missing | Needed by explorer.exe |
2020/11/24 |
PowerCreateRequest | Missing | Needed by explorer.exe |
2020/11/24 |
PowerSetRequest | Missing | Needed by explorer.exe |
2020/11/24 |
CreateSymbolicLinkW | Implemented | Redirected to CreateHardLinkW - untested |
2020/11/24 |
InitializeProcThreadAttributeList | Implemented | Wine - untested | 2020/11/24 |
UpdateProcThreadAttributeList | Implemented | Wine - untested | 2020/11/24 |
DeleteProcThreadAttributeList | Implemented | Wine - untested | 2020/11/24 |
GetActiveProcessorCount | Implemented | Using GetNativeSystemInfo & dwNumberOfProcessors - suggested 4chan anon >>78840134 -basic - 1 group of n processors - untested |
2020/11/24 |
GetLogicalProcessorInformationEx | need implementation | returns empty structure | 2020/11/23 |
CreateMutexExA | Implemented | Wine - untested | 2020/11/21 |
CreateMutexExW | Implemented | Wine - untested | 2020/11/21 |
CreateEventExW | Implemented | Wine - untested | 2020/11/21 |
CreateSemaphoreExW | Implemented | Wine - untested | 2020/11/21 |
CreateThreadpoolTimer | Implemented | Wine - untested | 2020/11/21 |
VirtualProtect | Implemented | Wine - untested | 2020/11/22 |
VirtualProtectEx | Implemented | Wine - untested | 2020/11/22 |
CompareStringEx | Implemented | Wine & wcscmp - untested |
2020/11/22 |
CompareStringOrdinal | Implemented | Wine & wcscmp - untested |
2020/11/22 |
FindNLSString | Implemented | Wine & wcscmp - untested |
2020/11/22 |
FindNLSStringEx | Implemented | Wine & wcscmp - untested |
2020/11/22 |
FindStringOrdinal | Implemented | Wine & wcscmp - untested |
2020/11/22 |
LocaleNameToLCID | Implemented | using GetLcidFromRfc1766 & SysAllocString - untested, need to get rid of LoadLibrary & GetProcAddress |
2020/11/22 |
LCIDToLocaleName | Implemented | using GetLocaleInfoW - untested |
2020/11/22 |
IsValidLocaleName | Implemented | Wine - untested | 2020/11/22 |
QueryFullProcessImageNameA | Implemented | Wine - untested | 2020/11/22 |
QueryFullProcessImageNameW | Implemented | Wine - untested | 2020/11/22 |
RegisterApplicationRestart | Implemented | Stub returning S_OK | 2020/11/21 |
ApplicationRecoveryInProgress | Implemented | Stub returning S_OK | 2020/11/21 |
ApplicationRecoveryFinished | Implemented | Stub returning S_OK | 2020/11/21 |
RegisterApplicationRecoveryCallback | Implemented | Stub returning S_OK | 2020/11/21 |
UnregisterApplicationRecoveryCallback | Implemented | Stub returning S_OK | 2020/11/21 |
CreateThreadpoolTimer | Implemented | Wine - untested | 2020/11/21 |
SetThreadpoolTimer | Implemented | Wine - untested | 2020/11/21 |
CloseThreadpoolTimer | Implemented | Wine - untested | 2020/11/21 |
WaitForThreadpoolTimerCallbacks | Implemented | Wine - untested | 2020/11/21 |
ResolveDelayLoadedAPI | Implemented | Wine - untested | 2020/11/21 |
GetFileInformationByHandleEx | Implemented | Wine - untested | 2020/11/21 |
Requirements
- A x86 version of Windows 2003 / XP SP1 with source code available: see build-win2k3
- Disable Windows File Protection when DLL's replacing after installation, see https://www.technipages.com/enable-disable-wfp
- Ability to execute executables built for newer versions than Windows XP SP2 / Windows Server 2003 RTM (NT 5.2): https://rentry.co/kernel32-version-unlock
Changes
Changes only happen in \base\win32\client
- (Included in the patched files) Add to
\base\win32\client\sources.inc
's SOURCES macro (typically line 113):
- (Included in the patched files) Add to
\base\win32\client\sources.inc
's SOURCES macro (typically line 1056):
- Place
_*.c
&_*.h
files from the<date>__KERNEL32.DLL.zip
archive, see Download below - Launch Razzle (32-bit) command, see build-win2k3
- Change directory
\base\win32\client
and runbcz
- Copy the
\base\win32\client\daytona\obj\i386\kernel32.dll
to yourc:\windows\system32\
on your Windows XP/2003 environment
Download implementations
Date | Filename | Link |
---|---|---|
2020/12/02 | 20201202__KERNEL32.DLL.v6.zip |
https://gofile.io/d/DH9dZL |
Test Harness
Some functions are being tested now as Python 3.9 does crash when starting, using a small program (WIP) calling the function with an input value:
Example kernel32_test.c
- complete project below:
Output of program with unmodified Windows XP/2003 KERNEL32.DLL installed:
Output of program with modified KERNEL32.DLL
To be stored under \kernel32_test
, build using Razzle and the bz
command