IPB

Google Frontpage Forums Unattended CD/DVD Guide
56 Pages V   1 2 3 > »   
Reply to this topicStart new topic
> KernelEx v0.3.5 released!, Run XP-only apps and games - Firefox 3,Quake 4,Doom 3,Prey,NFS:MW
Xeno86
post Apr 2 2006, 03:53 PM
Post #1


Member
**

Group: Members
Posts: 159
Joined: 26-March 06
Member No.: 91916
OS: 98SE
Country Flag


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
Go to the top of the page
 
+Quote Post
PROBLEMCHYLD
post 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
Country Flag


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.
Go to the top of the page
 
+Quote Post
Tihiy
post Apr 2 2006, 05:11 PM
Post #3


Revolutions Pack Creator
******

Group: Members
Posts: 1446
Joined: 19-November 04
From: NeverSleep
Member No.: 36858
OS: none
Country Flag


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?
Go to the top of the page
 
+Quote Post
LLXX
post Apr 2 2006, 06:36 PM
Post #4


MSFN Junkie
*********

Group: Banned
Posts: 3482
Joined: 4-December 05
Member No.: 81511
OS: none
Country Flag


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
Go to the top of the page
 
+Quote Post
krick
post 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
Go to the top of the page
 
+Quote Post
Marius '95
post Apr 2 2006, 08:13 PM
Post #6


Member
**

Group: Members
Posts: 109
Joined: 12-January 06
Member No.: 85098
Country Flag


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? woot.gif Let's hope that no program will create a hard link for a DVD image. whistling.gif
Go to the top of the page
 
+Quote Post
Xeno86
post Apr 3 2006, 06:05 AM
Post #7


Member
**

Group: Members
Posts: 159
Joined: 26-March 06
Member No.: 91916
OS: 98SE
Country Flag


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.
Go to the top of the page
 
+Quote Post
hougtimo
post Apr 3 2006, 06:14 AM
Post #8


Advanced Member
***

Group: Members
Posts: 301
Joined: 30-March 05
Member No.: 49834
Country Flag


How can this be released under the GPL????? It cant.
Go to the top of the page
 
+Quote Post
Xeno86
post Apr 3 2006, 07:05 AM
Post #9


Member
**

Group: Members
Posts: 159
Joined: 26-March 06
Member No.: 91916
OS: 98SE
Country Flag


@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.
Maybe implement some as stubs?
Which ones? (a list?)
QUOTE
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.
Do you mean apps which already don't work on Win 9x?
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.
Are you interested in this?
Wouldn't it be better to patch kernel32.dll so that is loads unicows.dll and runs this functions instead?
Go to the top of the page
 
+Quote Post
Tihiy
post Apr 3 2006, 09:02 AM
Post #10


Revolutions Pack Creator
******

Group: Members
Posts: 1446
Joined: 19-November 04
From: NeverSleep
Member No.: 36858
OS: none
Country Flag


QUOTE
- GetFilePointerEx (not so hard) - couldn't find that - did you mean SetFilePointerEx?
Yea laugh.gif
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 realmad.gif
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
Go to the top of the page
 
+Quote Post
noguru
post Apr 3 2006, 11:16 AM
Post #11


Member
**

Group: Members
Posts: 255
Joined: 24-February 06
Member No.: 89034
Country Flag


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)


QUOTE (hougtimo @ Apr 3 2006, 01:14 PM) *
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)
Go to the top of the page
 
+Quote Post
LLXX
post Apr 3 2006, 06:49 PM
Post #12


MSFN Junkie
*********

Group: Banned
Posts: 3482
Joined: 4-December 05
Member No.: 81511
OS: none
Country Flag


QUOTE (noguru @ Apr 3 2006, 12:16 PM) *
Or do you mean that the functions themselves are property of Microsoft?
Microsoft isn't that dumb to trademark/copyright API names laugh.gif
Go to the top of the page
 
+Quote Post
Juan
post Apr 3 2006, 07:38 PM
Post #13





Group: Members
Posts: 6
Joined: 3-April 06
Member No.: 92664
Country Flag


Hi, I suggest you to take some code ideas from http://source.winehq.org/source/dlls/kernel/
yes.gif
Go to the top of the page
 
+Quote Post
Tihiy
post Apr 4 2006, 02:29 AM
Post #14


Revolutions Pack Creator
******

Group: Members
Posts: 1446
Joined: 19-November 04
From: NeverSleep
Member No.: 36858
OS: none
Country Flag


QUOTE
I'll make a list.

Not soon, i have no internet at home now and no 9x at work no.gif

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.
Go to the top of the page
 
+Quote Post
wizardofwindows
post 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
Country Flag


welcome.gif good work on kernel32 update and is it possible to get a short list of what does run with update?things like msn 7.5 and other apps what the status on them etc.

This post has been edited by timeless: Apr 4 2006, 04:58 AM
Go to the top of the page
 
+Quote Post
Xeno86
post Apr 5 2006, 08:00 AM
Post #16


Member
**

Group: Members
Posts: 159
Joined: 26-March 06
Member No.: 91916
OS: 98SE
Country Flag


@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 tongue.gif - please report about your successes and failures
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 smile.gif
Go to the top of the page
 
+Quote Post
PROBLEMCHYLD
post Apr 5 2006, 08:40 AM
Post