Tihiy, on 23 March 2012 - 02:04 PM, said:
Hi RP fans,
I am sorry to read that Tihiy dropped the project. But I would be
even more sorry if the Revolutions Pack would die because of it.
I strongly believe in giving people a low-tech alternative to the
virus and spyware infected crap we are given these days. I think
Windows 98 is the Volkswagen of Operating Systems (MacOS being
the Porsche).
So I would like to continue the project. But my approach will be
different from Tihiy's. I want to use the "stub" approach. This
means creating a second User32.dll which is linked to all the
functions contained in the original User32.dll. This makes it
possible to override all of the windowing functions and use the
RP9 resources for skinning.
This approach has two major advantages: 1. It's clean, meaning
I don't have to find (and debug) all the different callback
functions and hooks, like Tihiy had to do.
2. It's portable to Windows 2000. At least I think it is. Of course,
a stub dll will be reported as being a virus, so maybe the whole
approach will become questionable.
In fact, I already created a prototype, using MinGW and some Assembler
code to "jump" to the original User32 functions. This works beautifully,
and I already got the basic skinning and alpha blending working.
There's a problem, though. If I use and test the dll during run-time
everything works as expected (it even works on an XP machine).
But if I try to boot Win98 with the stub dll in place, it crashes,
giving me the following error:
0D at 64D84558 (MUTEX_LEVEL_NUMBER_VIOLATION)
If I look this up on Google, I find some sites mentioning a
"priority inversion".
The strange thing is that in the bootlog file, I can see that
my User32.dll loaded and unloaded successfully, but when trying to
load the fonts, Win98 crashes with this error.
I am a very experienced Win32 programmer, writing programs in
Delphi and "pure api". I think I can pull it off, and I want to
take a shot at it.
But I also know that booting the new dll is the bottle-neck. If I
can get it to boot, I will put in my time.
So Tihiy, can you advise on this? Is it even possible? I'm sure
you had to solve this kind of problem for your kernel32 project.
Dandee.