Jump to content

Kext: DIY KernelEx extensions


Recommended Posts


Please (enable logging and) check kexstubs.log and report the definitions that are being used. In this thread we can discuss tweaking them to possibly improve results; also which APIs need to be implemented in KernelEx.

Link to comment
Share on other sites

There are no definitions being used in kexstubs.log, except one Shlwapi-forward I need on my (almost) vanilla Win98SE installation: StrCmpLogicalW=>C:\Windows\Kernelex\W98\Shlwapi.IE6:  ; MPC-HC 1.7.5 & MPC-BE 1.3.03; -> Shlwapi 6.0.2800.2006

Link to comment
Share on other sites

My main 98se box still has stock IE5.0, so my Shlwapi section looks like this:

[Shlwapi.dll] -- use IE8 --
IsCharSpaceA= ;ie8
PathCreateFromUrlAlloc= ;IE9
SHCreateThreadRef= ;ie8
SHRegisterValidateTemplate=r0x78s2 r120s2 ;upgrade to IE5.5 #67
ShellMessageBoxA= ;IE9
StrChrNW= ;ie8
StrCmpLogicalW=>:StrCmpIW ;upgrade to IE5.5
StrStrNIW= ;ie8


This is one of the reasons I'm considering making IE5.5 a requirement.

Instead of forwarding, my current recommendation is to use some of the files from IE5.5, 6, or even 8 (as I do) as additional "helper" modules via KernelEx\KnownDLLs:

REGEDIT4

[HKEY_LOCAL_MACHINE\Software\KernelEx\KnownDLLs]
"advpack" ="IE8\\advpack.dll"
"ieframe" ="IE8\\ieframe.dll"
"iertutil" ="IE8\\iertutil.dll"
"jscript" ="IE8\\jscript.dll"
"msrating" ="IE8\\msrating.dll"
"normaliz" ="IE8\\normaliz.dll"
"occache" ="IE8\\occache.dll"
"shlwapi" ="IE8\\shlwapi.dll"
"urlmon" ="IE8\\urlmon.dll"
"xmllite" ="IE8\\xmllite.dll"


Link to comment
Share on other sites

@jumper, I understand somethings but is it necessary to have ieframe.dll as I don't see how it would load if it were called for? IE6 will pick up an ieframe ROS file, I have had this occur. The SHRegisterValidateTemplate=r0x78s2 r120s2 can you explain? Are they functions without string references ie N/A? Xmllite and normaliz should not be a problem should they? Use them straight in the system? I have had Normaliz picking up before.

Link to comment
Share on other sites

> is it necessary to have ieframe.dll as I don't see how it would load if it were called for?
If it is called for then it probably is necessary. And it will load if all dependencies are available. Unfortunately KernelEx doesn't currently support selecting from multiple versions of IE. The use of IE8 files is a work-in-progress--an attempt to upgrade browsers that (can) use the Trident rendering engine up from IE5/5.5/6 to IE8. Probably now a case of "too little, too late." :(
Because some websites block IE6, I recommend installing IE5.5 instead. You do not need to use any of the IE8 files if you don't want to.

>> SHRegisterValidateTemplate=r0x78s2 r120s2 ;upgrade to IE5.5 #67
> The SHRegisterValidateTemplate=r0x78s2 r120s2 can you explain?
Comments actually start at the first space, so the definition is "SHRegisterValidateTemplate=r0x78s2" and the comment is "r120s2 ;upgrade to IE5.5 #67". Hex 0x78 is equal to decimal 120. Kexstubs version 822 and earlier contain a parsing bug the requires return values to be specified in hex. "#67" means "see discussion in post #67." Because posts are no longer numbered, this is now the 7th post on page 5 (4*15 + 7).

> Are they functions without string references ie N/A?
Please read the documentation at the top of stubs.ini.

> Xmllite and normaliz should not be a problem should they? Use them straight in the system? I have had Normaliz picking up before.
I highly recommend against putting non-9x files directly into the System folder. Apps that can use these files also need KernelEx, so put them in a KernelEx subfolder and reference them via HKEY_LOCAL_MACHINE\Software\KernelEx\KnownDLLs.

Link to comment
Share on other sites

@jumper My post of Februari 17 was'nt fully accurate. The API's I reported were in fact called by the Uxtheme.dll-version (ReactOS 0.4.3) I started to use after the app I mentioned called Ordinal 61 in Uxtheme.

In the meantime I tested all ReactOS versions I could find; from 0.3.8 (first one) up to latest 0.4.11. Here is a list I made with ImportPatcher and Kexports, higher versions needed more stubs to load. Only one stub needed a return-value.

IMPORTPATCHER (KernelEx mode VISTA)

[Patches needed]
Uxtheme.dll=Functions

[GDI32.dll]
;SetDCPenColor= ; ROS 0.3.14 - covered since KernelEx 4.5.2

[Ntdll.dll]
RtlAllocateHandle= ; ROS 0.4.6 - 
RtlFreeHandle= ; ROS 0.4.6 -
RtlInitializeHandleTable=z1 ; ROS 0.4.6 - "set last error -1" z1 seems to work
RtlIsValidHandle= ; ROS 0.4.6 - 
RtlRaiseException= ; ROS 0.4.11 - 
;_vsnprintf=> ; ROS 0.3.3 - covered since KernelEx 4.5.2015.6
;bsearch=> ; ROS 0.3.4 - covered since KernelEx 4.5.2015.6
;DbgPrintExWithPrefix=t5 ; ROS 0.3.7 - covered since KernelEx 4.5.2015.4
;memcmp=> ; ROS 0.3.4 - covered since KernelEx 4.5.2015.6
;memcpy=> ; ROS 0.2.8 - covered since KernelEx 4.5.2015.6
;memmove=> ; ROS 0.3.4 - covered since KernelEx 4.5.2015.6
;memset=> ; ROS 0.2.8 - covered since KernelEx 4.5.2015.6
;sprintf=> ; ROS 0.2.8 - covered since KernelEx 4.5.2015.6
;sscanf=> ; ROS 0.2.8 - covered since KernelEx 4.5.2015.6
;strchr=> ; ROS 0.3.4 - covered since KernelEx 4.5.2015.6
;strcmp=> ; ROS 0.3.4 - covered since KernelEx 4.5.2015.6
;strcpy=> ; ROS 0.3.4 - covered since KernelEx 4.5.2015.6
;strcspn=> ; ROS 0.3.4 - covered since KernelEx 4.5.2015.6
;wcschr=> ; ROS 0.2.8 - covered since KernelEx 4.5.2015.6

[user32.dll]
KillSystemTimer= ; ROS 0.3.14 - 
PaintMenuBar= ; ROS 0.4.5 - 
SetSystemTimer= ; ROS 0.3.14 - 
UnregisterUserApiHook= ; ROS 0.3.14 - 

BTW: I didn't test the one's already covered by KernelEx.
 

Link to comment
Share on other sites

Uxtheme from ROS dates back to 2006 I use 2010 or 2011 https://iso.reactos.org/bootcd/ . I have tried later versions of files from 4.11+ (not remember) but after a certain build the files do not pick up with Opera etcetera. ROS Uxtheme later versions have no extra functions unless you use Uxtheme from one-core-x86, 109 functions but miss out on a couple from original. If using Uxtheme from one-core-x86, ROS Uxtheme as UxthemeBase, it loads slower as all functions are active on UxthemeBase and the extra functions from one-core-x86 are only stubs as far as I can tell.

Edited by Goodmaneuver
Maxthon just wasn't redirecting to AU site
Link to comment
Share on other sites

But does the use of Uxtheme actually allow any theming? If not, the best choice is my 95-API version (including OpenThemeDataEx @61) at KernelEx Auxiliary DLL Updates

I have given up on using any ROS files as complete replacements. I do test individual APIs via Kexstubs. Now I mainly use ReactOS source code directly in KernelEx.

Link to comment
Share on other sites

I tested all 31 ROS versions, also an Uxtheme version I downloaded long ago, found on my hard drive. Now I know that's your version. :ph34r:

There are no real differences in drawing added toolbars (Toolbar.BMP) in MPC-HC 1.7.5, resizing buttons, or draw buttons that are currently not active. All NOT possible. Just for fun I took Uxtheme (6.00.2900.5512 (xpsp.080413-2105) from my XPSP3 installation, can be used, same results (asks for three other stubs).

I can confirm that with your Uxtheme version MPC-HC 1.7.5 is starting without problems (and MPC-BE 1.4.3.5854 too).
 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...