Important
As of v1.8 you may need to update your kernel32 so it has certain Heap functions. Here is a link to update which contains an update kernel32, you only need run it if you get error messages about missing functions in kernel32_org.dll.
http://www.microsoft.com/downloads/deta ... laylang=en
Download
Wrapper Pack v1_9
Latest Readme
- Code: Select all
Windows 2000 XP API Wrapper Pack
--------------------------------
Copyright 2008, distributed under the terms of the
Lesser GNU General Public License.
!!!!!!!DISCLAIMER!!!!!!!
THIS PACK IS NOT CREATED/SUPPORTED BY MICROSOFT IN ANYWAY.
WHEN MESSING WITH SYSTEM DLLS YOU CAN HOSE YOUR SYSTEM, READ WHAT THIS DOC SAYS
AND FOLLOW IT'S ADVICE. YOU SHOULD NOT DELETE ANYTHING FROM SYSTEM32, THESE
WRAPPERS ARE NOT INTENDED TO BE PLACED THERE! FOLLOW THIS AND YOU WILL BE
SAFE. IF YOU ARE COMFORTABLE WITH DOS AND KNOW WHAT YOU ARE DOING YOU CAN UNDO
THE CHANGE IF YOU NEED TO BUT DO NOT COME CRYING TO ME IF SOMETHING GOES WRONG.
The Win2k wrapper pack is a collection of DLLs (dynamic loaded libraries) that
'wrap' the Windows API. These wrapper DLLs 'target' original copies of the
system DLLs. Most of these fixes were chosen to get newer games working on 2K,
but I've added a lot of application fixes too.
This is NOT meant as a general XP compatibility kit to drop in your system32,
while that does work in MOST cases it is kind of dangerous and I don't recommend
it, see above :). Rather these DLLs should be placed along side the executable
or in the start directory of the application.
In order to use these wrapper DLLs you MUST copy the original system DLLs
somewhere in the DLL search path with the TARGET name listed below. In my case I
have a folder in my PATH (WINXP_DLLS) that are unique to XP, ie no 2k
equivalent. I place my TARGET DLLs here as well.
In some cases (kernel32.dll, shell32, & user32.dll) the DLL search path must be
modified due to 'KnownDLLs' These KnownDLLs are only loaded from the system32,
but this functionality can be disabled by Regedt32. (*IMPORTANT regedit.exe
won't work*) Simply add the DLLs to exclude from 'KnownDLLs' to
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\ExcludeFromKnownDlls
this is a multiline value, so place a dll on each line.
Included in this pack should be a ExcludeFromKnownDlls.reg which will set this
to kernel32, shell32, advapi32 & user32. A reboot is needed for this to take
effect. To see a list of KnownDLLs see
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs
For more info on DLL search paths see this awesome page
DLL Loading Rules in Win32 [http://home.att.net/~raffles1/older/dll_loading_rules_in_win32.htm]
======================
=Current DLL Wrappers=
======================
ADVAPI32.DLL TARGET=ADVAPI32_ORG.DLL
**********************************
XP FUNCTIONS
A_SHAInit
A_SHAUpdate
A_SHAFinal
MD5Init
MD5Update
MD5Final
SystemFunction036
TraceMessage
CredGetSessionTypes
CredWriteW
CredWriteA
CredReadW
CredReadA
CredFree
CredEnumerateW
CredEnumerateA
CredDeleteW
CredDeleteA
SHELL32.DLL TARGET=SHELL32_ORG.DLL
**********************************
XP FUNCTIONS
IsUserAnAdmin
SHParseDisplayName
SHGetFolderPathAndSubDirW
SHGetFolderPathAndSubDirA
SHCreateFileExtractIconW
SHGetImageList
SHCreateShellItem (partial)
USER32.DLL TARGET=USER32_ORG.DLL INI=win2k_xp_kernel32.ini
**********************************************************
This DLL provides RAWINPUT for windows 2000. There is an option to use either
DirectInput or a keyboard/mouse low level hook which can be specified in the ini
file. The ini file is the same one that kernel32 uses the info is just in a
different section.
Default ini values
[win2k_xp_user32]
UseDirectInput=0
XP FUNCTIONS
GetRegisteredRawInputDevice
RegisterRawInputDevices
GetRawInputBuffer
GetRawInputData
GetRawInputDeviceList
GetRawInputDeviceInfoA
GetRawInputDeviceInfoW
GetLayeredWindowAttributes
GetWindowRgnBox
DisableProcessWindowsGhosting
PrintWindow
SetProcessDPIAware
KERNEL32.DLL TARGET=KERNEL32_ORG.DLL INI=win2k_xp_kernel32.ini
**************************************************************
This DLL use a ini file (win2k_xp_kernel32.ini) for advanced configuration. It
should be in the start directory of the application. This ini file is not
required, default values will be used as listed below.
*majVer, minVer, buildNum, majSP, minSP, and versionString are all overrides for
GetVersion, GetVersionEx, and VerifyVersionInfo, if omitted the system value is
returned. Using this with msiexec will not result in anything good (tries to
make a bunch of XP calls.)
*verifyVersion if set to 1 will force VerifyVersionInfo to return TRUE
*versionFaking can be set to 'include' or 'exclude', this works with the
[version_module_list] section described below.
*GetModuleOriginal if not set to 0 will return a HANDLE to the system
kernel32.dll, this might be useful if kernel32 has a new exports and this and
this wrapper is out of date.
*geoNation & geoRegion specify return values for GetUserGeoID. If omitted
defaults to United States.
*SystemDirectory overrides the return value for GetSystemDirectoryA &
GetSystemDirectoryW. If omiited returns the system value.
*Load_ACLayers if not set to 0 will do LoadLibrary("aclayers.dll"), this is to
get past securom, which doesn't seem to approve of the wrapper. Make sure to
place aclayers.dll somewhere in the search path.
*RewriteExportTable if not set to 0 will do some export hacks for programs that
think they know how to read a PE. (Basically the RVA for the functions in the
wrapper will point to KERNEL32_ORG)
*debug set to larger values will produce more information in a console window,
larger values include all previous level of detail. Note that the debugging
output capabilities of kernel32 is also accessed by user32 (and more dlls in the
future) so if you want to see debugging info from them you must also run the
kernel32 dll.
1 - Errors
2 - Warnings
3 - Info
4 - Trace
Example win2k_xp_kernel32.ini (All default values on MY machine)
[win2k_xp_kernel32]
majVer=5
minVer=0
buildNum=2195
GetModuleOriginal=0
geoNation=244
geoRegion=244
geoISO2=US
geoISO3=USA
SystemDirectory=C:\WINNT\system32
Load_ACLayers=0
RewriteExportTable=0
verifyVersion=0
versionFaking=exclude
debug=0
The version faking can also use a filter rather than being global.
versionFaking must be set above to either 'include' or 'exclude' to
perform filtering. If 'include' also listed modules will have faking
applied, if 'exclude' only the modules listed will NOT have faking
applied. Each module's filename should be listed and followed with '=1'.
Example version faking section (in same ini file).
[version_module_list]
SomeModule.exe=1
AnotherModule.dll=1
XP FUNCTIONS
GetProcessId
GetThreadId
RestoreLastError
GetModuleHandleExW
GetModuleHandleExA
EncodePointer
DecodePointer
InterlockedPopEntrySList
InterlockedPushEntrySList
InitializeSListHead
InterlockedFlushSList
GetNativeSystemInfo
WTSGetActiveConsoleSessionId
GetUserGeoID
GetGeoInfoA
GetGeoInfoW
GetProcessHandleCount
CheckRemoteDebuggerPresent
GetNumaProcessorNode
GetNumaNodeProcessorMask
GetSystemTimes
GetSystemWow64DirectoryA
GetSystemWow64DirectoryW
IsWow64Process
AttachConsole
GetVolumePathNamesForVolumeNameA
GetVolumePathNamesForVolumeNameW
AddVectoredExceptionHandler
RemoveVectoredExceptionHandler
RtlCaptureContext
QueryDepthSList
TzSpecificLocalTimeToSystemTime
SetDllDirectoryW
SetDllDirectoryA
GetDllDirectoryW
GetDllDirectoryA
IsProcessInJob (partial)
ActivateActCtx (stub)
DeactivateActCtx (stub)
ReleaseActCtx (stub)
GetCurrentActCtx (stub)
CreateActCtxW (stub)
CreateActCtxA (stub)
WTSAPI32.DLL TARGET=WTSAPI32_ORG.DLL
************************************
Provides two functions present in XP, but meaningless in 2K, always do nothing
and return success.
XP FUNCTIONS
WTSRegisterSessionNotification
WTSUnRegisterSessionNotification
WTSQueryUserToken
WS2_32.DLL TARGET=WS2_32_ORG.DLL
********************************
XP FUNCTIONS
getaddrinfo
freeaddrinfo
getnameinfo
FreeAddrInfoW
ConnectEx
DisconnectEx
UXTHEME.DLL
***********
Just some stubs for now
OpenThemeData (stub)
CloseThemeData (stub)
DrawThemeBackground (stub)
GetCurrentThemeName (stub)
IsAppThemed (stub)
Tools for troubleshooting
-------------------------
Dependency Walker [http://www.dependencywalker.com/]
API Monitor [http://www.rohitab.com/apimonitor/]
APISpy32 [http://www.internals.com/]
Credits
-------
OldCigarette - coder of wrapper pack
OldBoy2k - old fashioned win2k user
TheProphet - RawInput and GetSystemTimes code
DosFreak - tester extraordinaire
WINE - Code bits, most of advapi32 (http://www.winehq.org/)
ReactOS - killer API documentation
Previous Releases
Wrapper Pack v1_8
Wrapper Pack v1_7
Wrapper Pack v1_6
Wrapper Pack v1_5
Wrapper Pack v1_4
Wrapper Pack v1_3_1
Wrapper Pack v1_3
Wrapper Pack v1_2
Wrapper Pack v1_1
Wrapper Pack v1
