![]() ![]() |
Apr 2 2006, 03:53 PM
Post
#1
|
|
|
Member ![]() ![]() Group: Members Posts: 159 Joined: 26-March 06 Member No.: 91916 OS: 98SE
|
KernelEx v0.3.5
For those of you who are still hesitating but are willing to test: KernelEx automatically creates backup of files it modifies and creates a special recovery script making potencial recovery as fast and painless as possible. Please read README file carefully. Thanks. Description: What is KernelEx? KernelEx is a compatibility layer to allow running Windows XP-only applications on Windows 98 and Windows Millennium. KernelEx is an open source project and is not distributing any copyrighted files. This project neither requires nor includes files from newer OSes, like Windows 2000 or Windows XP. The aim of the project is to implement functions (not present on Windows 98 / ME) to kernel32.dll and other system libraries so that recent Windows XP programs and games work on Windows 98 / ME. Requirements: * Windows 98 FE or Windows 98 SE or Windows ME ANY LANGUAGE VERSION and kernel version * Microsoft Layer for Unicode (MSLU) [Unicows.dll], version 1.1.3790.0 Latest changes: KernelEx v0.3.5 by Xeno86/Tihiy 07/11/2008 * fixed GetVersion wrapper not always resolving modules correctly from "Skip Modules" section * added experimental PSAPI.DLL library (not installed by default) * Changed: - LoadStringW to support case when buffer length is zero (like NT) - SendMessage, LB_SETTABSTOPS and EM_SETTABSTOPS messages to work if tab-stop array isn't writable - GetStartupInfoW (MSLU implementation leaves string pointers uninitialized) * Implemented: - GetFileVersionInfoSizeW - GetFileVersionInfoW - VerFindFileW - VerInstallFileW - VerLanguageNameW - VerQueryValueW - HeapLock - HeapUnlock * tweaks in unicode library for DBCS support * fixed DisablePlatformCheck exception in setup program DOWNLOAD: http://x86.neostrada.pl/KernelEx/ This post has been edited by Xeno86: Jul 11 2008, 11:59 AM |
|
|
|
Apr 2 2006, 04:18 PM
Post
#2
|
|
|
Friend of MSFN ![]() ![]() ![]() ![]() ![]() Group: Members Posts: 913 Joined: 7-October 05 From: Chicago Member No.: 75997 OS: 98SE
|
I'm not 2 familiar wit your work, but what ever u doing keep doing it.
98se2me and KERNEL UPDATE PROJECT is all I need. You guys r the best. |
|
|
|
Apr 2 2006, 05:11 PM
Post
#3
|
|
|
Revolutions Pack Creator ![]() ![]() ![]() ![]() ![]() ![]() Group: Members Posts: 1450 Joined: 19-November 04 From: NeverSleep Member No.: 36858 OS: none
|
I think there are some apis you may consider to implement:
- RestoreLastError (just link it to SetLastError) - GetFilePointerEx (not so hard) I don't remember more easy to implement apis which can improve application compatibility. Maybe implement some as stubs? Another large group of functions is Unicode (....W) functions. They can be emulated using Unicows (MSLU). But if you'll link Unicode funcitons to Unicows functions, you'll break some applications which are not expecting Windows 9x to support Unicode. There was KernelXP project during RP lifetime; it was wrappers around standard libraries (kernel32,user32,etc) which were using Unicows to provide Unicode functions. To use them, applications import table had to be patched to use wrapper libraries instead of standard ones. Also it provided GetVersion(Ex) emulation. Are you interested in this? |
|
|
|
Apr 2 2006, 06:36 PM
Post
#4
|
|
|
MSFN Junkie ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: Banned Posts: 3482 Joined: 4-December 05 Member No.: 81511 OS: none
|
Summary of missing APIs which I've evaluated:
Kernel32.dll VerifyVersionInfoW (required by MSO.DLL) possible - but then what would 98SE identify itself as? VerSetConditionMask (required by MSO.DLL) possible - see above SetFilePointerEx (required by OSE.DLL) possible GetFileSizeEx (required by OSE.DLL) possible CreateHardLinkW (required by OSE.DLL) NTFS only, no chance User32.dll GetLastInputInfo probably unlikely AllowSetForegroundWindow no functionality to be implemented SetLayeredWindowAttributes too much work required to implement transparent windows Shell32.dll SHGetFolderLocation available in Windows ME shell32.dll (5.0 or later version) AdvApi32.dll - All the functions below will require extensive work and thus won't be implemented - would a replacement ADVAPI32.DLL from a newer Windows version work? LsaClose LsaStorePrivateData LsaRetrievePrivateData LsaNtStatusToWinError LsaOpenPolicy ConvertSidToStringSidW DecryptFileW EncryptFileW ConvertStringSecurityDescriptorToSecurityDescriptorW ConvertSidToStringSidA CheckTokenMembership ...and once I get more free time I'll resume working on the Large Disk Driver (>137Gb). I'm currently quite busy with something else (not 98 related). This post has been edited by LLXX: Apr 2 2006, 06:37 PM |
|
|
|
Apr 2 2006, 07:47 PM
Post
#5
|
|
|
Member ![]() ![]() Group: Members Posts: 108 Joined: 25-October 04 Member No.: 34722 |
Does unicode support need to be hacked in? I thought that was what Micosoft Layer for Unicode was for...
http://www.microsoft.com/globaldev/handson...u_announce.mspx |
|
|
|
Apr 2 2006, 08:13 PM
Post
#6
|
|
|
Member ![]() ![]() Group: Members Posts: 109 Joined: 12-January 06 Member No.: 85098
|
I don't know programming, only PHP, but I can give you some ideas.
Use some tricks for CreateHardLinkW. Create a copy of that file instead of a hard link, and use a resident utility to keep the copies sincronized. What do you say? Is it possible? |
|
|
|
Apr 3 2006, 06:05 AM
Post
#7
|
|
|
Member ![]() ![]() Group: Members Posts: 159 Joined: 26-March 06 Member No.: 91916 OS: 98SE
|
QUOTE (Marius '95) Use some tricks for CreateHardLinkW. Create a copy of that file instead of a hard link, and use a resident utility to keep the copies sincronized. What do you say? Is it possible? Create copy - possible for keeping copies syncronized additional tool would have to be created btw. For testing purposes i would need an app which uses this function. |
|
|
|
Apr 3 2006, 06:14 AM
Post
#8
|
|
|
Advanced Member ![]() ![]() ![]() Group: Members Posts: 301 Joined: 30-March 05 Member No.: 49834
|
How can this be released under the GPL????? It cant.
|
|
|
|
Apr 3 2006, 07:05 AM
Post
#9
|
|
|
Member ![]() ![]() Group: Members Posts: 159 Joined: 26-March 06 Member No.: 91916 OS: 98SE
|
@Tihiy
- RestoreLastError (just link it to SetLastError) added - GetFilePointerEx (not so hard) - couldn't find that - did you mean SetFilePointerEx? QUOTE I don't remember more easy to implement apis which can improve application compatibility. Which ones? (a list?)Maybe implement some as stubs? QUOTE Another large group of functions is Unicode (....W) functions. Do you mean apps which already don't work on Win 9x?They can be emulated using Unicows (MSLU). But if you'll link Unicode funcitons to Unicows functions, you'll break some applications which are not expecting Windows 9x to support Unicode. QUOTE There was KernelXP project during RP lifetime; it was wrappers around standard libraries (kernel32,user32,etc) which were using Unicows to provide Unicode functions. To use them, applications import table had to be patched to use wrapper libraries instead of standard ones. Also it provided GetVersion(Ex) emulation. Wouldn't it be better to patch kernel32.dll so that is loads unicows.dll and runs this functions instead?
Are you interested in this? |
|
|
|
Apr 3 2006, 09:02 AM
Post
#10
|
|
|
Revolutions Pack Creator ![]() ![]() ![]() ![]() ![]() ![]() Group: Members Posts: 1450 Joined: 19-November 04 From: NeverSleep Member No.: 36858 OS: none
|
QUOTE - GetFilePointerEx (not so hard) - couldn't find that - did you mean SetFilePointerEx? Yea QUOTE Which ones? (a list?) I'll make a list. QUOTE But if you'll link Unicode funcitons to Unicows functions, you'll break some applications which are not expecting Windows 9x to support Unicode. Do you mean apps which already don't work on Win 9x? No. RP4 included unicode support by default in user32.dll for example -> it raised a lot of problems (read RP4 thread) so i had to drop it There can be problems on incorrect library load order; memory violation or deadloops if you'll directly link them to Unicows. Better to: make a configuration file which contains something like: [someapp.exe] Unicode=1 Version=WinXP and use such algorithm: open the file, check if Unicode enabled, then load unicows.dll and execute required otherwise pass to "donothing" wrapper; also version lying can be written (for apps checkit it) by rewriting GetVersion/Ex... This post has been edited by Tihiy: Apr 3 2006, 09:03 AM |
|
|
|
Apr 3 2006, 11:16 AM
Post
#11
|
|
|
Member ![]() ![]() Group: Members Posts: 257 Joined: 24-February 06 Member No.: 89034
|
Thanks again xeno86.
With a uninstaller and a readme it's becoming less beta too. Cool! More important, no more problems with SisoftSandra like before (tested 0.10b) How can this be released under the GPL????? It cant. May I ask why? The patch imports functions into the original kernel32.dll. There is no modified kernel32.dll inside and certainly no "copy past" original code from Microsoft. Or do you mean that the functions themselves are property of Microsoft? (being the end-user I would screw up my rights on product support after applying this patch, but that is not relevant I think) |
|
|
|
Apr 3 2006, 06:49 PM
Post
#12
|
|
|
MSFN Junkie ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: Banned Posts: 3482 Joined: 4-December 05 Member No.: 81511 OS: none
|
|
|
|
|
Apr 3 2006, 07:38 PM
Post
#13
|
|
|
Group: Members Posts: 6 Joined: 3-April 06 Member No.: 92664
|
|
|
|
|
Apr 4 2006, 02:29 AM
Post
#14
|
|
|
Revolutions Pack Creator ![]() ![]() ![]() ![]() ![]() ![]() Group: Members Posts: 1450 Joined: 19-November 04 From: NeverSleep Member No.: 36858 OS: none
|
QUOTE I'll make a list. Not soon, i have no internet at home now and no 9x at work I think you can use such common algorithm: Find program you want very much to run on 9x. - Open program in Dependancy Walker (from 2k/XP/2k3 support tools or google). - Check what functions are missing. - Read MSDN & Wine sources to find how important they are. - Implement them as stubs which return nothing (xor eax,eax/retn..) or something, also SetLastError (E_NOTIMPL) if you think they are important. - 99% of required Unicode functionality is built in Unicows. Usually it's very hard to run complex MS program written for XP (i think Office 2003 = impossible), but it may be possible to run programs that have 9x roots (Movie Maker 2?). It is impossible to make newer libraries like MFC42U.DLL to run. But third party programs have more chances - they don't utitize much XP-specific functionality. I had Acrobat Reader 7 loading (displayed splash screen and hung), Google Earth working, MSN Messenger 7.5 working and small XP/Vista tools working. You can achieve more. I can help you with GetVersion/Ex emulation library and frontend. |
|
|
|
Apr 4 2006, 04:58 AM
Post
#15
|
|
|
Wizard of Windows ![]() ![]() ![]() ![]() Group: Banned Posts: 532 Joined: 17-June 05 From: Ontario Canada Member No.: 60904
|
This post has been edited by timeless: Apr 4 2006, 04:58 AM |
|
|
|
Apr 5 2006, 08:00 AM
Post
#16
|
|
|
Member ![]() ![]() Group: Members Posts: 159 Joined: 26-March 06 Member No.: 91916 OS: 98SE
|
@timeless
Applications known to work after patching: Doom 3 Quake 4 Need For Speed Most Wanted and other which complained about missing GlobalMemoryStatusEx As for regular applications: MSN - I don't know - in Poland nobody uses it. Other apps? status = unknown Make a list of applications you'd like see running on Win 9x and which complain about missing exports and I'll see what can be done. @Tihiy Unfortunately I'm not familiar with your RP project because of this: QUOTE Do not forget this release is only for Windows 98 Second Edition,English! GetVersion(Ex) - how many programs rely on this?Now I will be trying to run FEAR on Win 9x: GetFileSizeEx, SetFilePointerEx and shell32:SHGetFolderPath will have to be implemented. Hopefully it will work |
|
|
|
Apr 5 2006, 08:40 AM
|