![]() ![]() |
Apr 2 2006, 03:53 PM
Post
#1
|
|
|
Member ![]() ![]() Group: Members Posts: 170 Joined: 26-March 06 Member No.: 91916 OS: 98SE
|
KernelEx v0.3.6
Note: this thread refers to old version of the project (pre-4.0 series). To discuss new version go to KernelEx v 4.0 thread. 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.6 by Xeno86/Tihiy 10/21/2008 * added custom MSIMG32 library * rewritten non-working TryEnterCriticalSection implementation * PeekMessageW, DispatchMessageW, IsDialogMessageW, TranslateAcceleratorW, CopyAcceleratorTableW, CreateAcceleratorTableW, CallMsgFilterW call their ANSI counterparts directly * in unicode to codepage translations for file apis, "_" is now default character instead of "?" * Fixed SetFilePointerEx to preserve LastError * Fixed GetVersion apis ignoring Skip Modules list in some cases * Fixed RegQueryValueExW bug that could lead to crash in kexulay * Fixes and workarounds for various MSLU wndproc-related issues: * Changed: CallWindowProcA, GetWindowLongA, RegisterClassW/Ex * Patch to remove KERNEL32.DLL resource checking ("program is invalid format or appears corrupted") * Implemented: - LockFileEx - GetCharWidthI - LockWorkstation - IsHungAppWindow - RealGetWindowClassW - MoveFileWithProgressA/W - CommandLineToArgvW - HeapSetInformation * Stubs: - RegOverridePredefKey - ReplaceFileA/W - CreateJobObjectA/W,TerminateJobObject,OpenJobObjectA/W,QueryInformationJobObject,SetInformationJobObject,AssignProcessToJobObject - RegisterWaitForSingleObject/Ex,UnregisterWait/Ex - RegDisablePredefinedCache,IsWellKnownSid,SecuritySecurityDescriptorDescriptorblahblah - IsValidLanguageGroup - more stubs in psapi.dll DOWNLOAD: http://x86.neostrada.pl/KernelEx/ This post has been edited by Xeno86: Mar 10 2009, 06:14 PM |
|
|
|
Apr 2 2006, 04:18 PM
Post
#2
|
|
|
Friend of MSFN ![]() ![]() ![]() ![]() ![]() Group: Members Posts: 917 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
|
|
|
god of the ancient world ![]() ![]() ![]() ![]() ![]() ![]() Group: Members Posts: 1080 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: 3399 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: 106 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: 106 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: 170 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
|
|
|
Member ![]() ![]() Group: Members Posts: 275 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: 170 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
|
|
|
god of the ancient world ![]() ![]() ![]() ![]() ![]() ![]() Group: Members Posts: 1080 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: 291 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: 3399 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
|
|
|
god of the ancient world ![]() ![]() ![]() ![]() ![]() ![]() Group: Members Posts: 1080 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: 443 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: 170 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
Post
#17
|
|
|
Friend of MSFN ![]() ![]() ![]() ![]() ![]() Group: Members Posts: 917 Joined: 7-October 05 From: Chicago Member No.: 75997 OS: 98SE
|
I have all updates installed.Tryin 2 play Nestopia.
I get error GetModuleFileName().Maybe this can help u,help me. And no this is not cause by your patch. List of apps I would like is Napster and Windows Movie Maker This post has been edited by PROBLEMCHYLD: Apr 5 2006, 09:47 AM |
|
|
|
Apr 5 2006, 09:52 AM
Post
#18
|
|
|
Member ![]() ![]() Group: Members Posts: 170 Joined: 26-March 06 Member No.: 91916 OS: 98SE
|
QUOTE I get error GetModuleFileName().Maybe this can help u,help me. What does the error message say exactly?It would be strange if it was GetModuleFileName because it exists in Windows 9x - are you sure that it wasn't GetModuleFileNameEx ? |
|
|
|
Apr 5 2006, 09:57 AM
Post
#19
|
|
|
Friend of MSFN ![]() ![]() ![]() ![]() ![]() Group: Members Posts: 917 Joined: 7-October 05 From: Chicago Member No.: 75997 OS: 98SE
|
GetModuleFileName()failed!
This all it says Another would be Windows Movie Maker 1 Shell32.dll:SHgetFolderPathW. Napster- Shell32.dll:SHgetFolderPathA This post has been edited by PROBLEMCHYLD: Apr 6 2006, 09:40 AM |
|
|
|
Apr 5 2006, 09:41 PM
Post
#20
|
|
|
MSFN Junkie ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Group: Banned Posts: 3399 Joined: 4-December 05 Member No.: 81511 OS: none
|
|
|
|
|
![]() ![]() |
| Lo-Fi Version | Time is now: 3rd July 2009 - 09:29 PM |