Jump to content

KernelEx 4.5 Core Updates (4.5.2016.25)


Recommended Posts

Just tested VLC3.04 all OK. I did not take any chances and started program with Win98SE and I do not have any errors on exiting. I use msvcrt of 8.0.31113.25 in the VLC directory or as a system file, I still have libqt_plugin.dll as left altered 'IsDebuggerPresent'. I have VLC2 installed in separate directory with a renamed VLC exe so it is recognized different in registry. Icecast stations are found but downloading the play list does not occur with VLC3. There are many more than VLC2.

I tested VLC3 with an unaltered libqt_plugin.dll message says VLC errorred in libqt_plugin.dll. It does not matter what mode VLC is using. VLC needs to be installed, unzipped from a reliable source or copied from another Win9X working directory. It does not play files if copied from Win7 I found? This was because OpenGL would not render the files on my system see page 43.

Edited by Goodmaneuver
Problem Solved
Link to comment
Share on other sites

I'm still working on the .21 documentation, but here's Kexbases.22 (with some docs inside) anyway:

delta.22.7z - 130KB

Improved debug support is the focus. Also some additions from discussions in the DIY thread. Thanks to @schwups, @roytam1, and everyone continuing the discussion here.

New API's:
_kernel32_apilist.c (+ added, ^ changed, - removed)
+ DECL_API("ConvertFiberToThread", ConvertFiberToThread_stub),
+ DECL_API("DebugBreak", DebugBreak_stub),
+ DECL_API("DebugBreak", DebugBreak_new),
+ DECL_API("InitializeCriticalSectionEx", InitializeCriticalSectionEx_new),
+ DECL_API("IsDebuggerPresent", IsDebuggerPresent_no),
+ DECL_API("IsDebuggerPresent", IsDebuggerPresent_yes),
+ DECL_API("OutputDebugStringA", OutputDebugStringAW_stub),
+ DECL_API("OutputDebugStringA", OutputDebugStringA_new),
+ DECL_API("OutputDebugStringW", OutputDebugStringAW_stub),
^ DECL_API("OutputDebugStringW", OutputDebugStringW_new),
+ DECL_API("QueryThreadCycleTime", QueryThreadCycleTime_stub),

+ DECL_API("DbgBreakPoint", DbgBreakPoint_dbg),
+ DECL_API("DbgPrint", DbgPrint_dbg),
+ DECL_API("DbgPrintEx", vDbgPrintEx_dbg),
+ DECL_API("DbgPrompt", DbgPrompt_dbg),
+ DECL_API("vDbgPrintEx", vDbgPrintEx_dbg),
+ DECL_API("vDbgPrintExWithPrefix", vDbgPrintExWithPrefix_dbg),

_other_apilist.c (! oops neglected to export!)
! DECL_API("Lz32_SymGetSearchPathW_Dbghelp", Lz32_SymGetSearchPathW_Dbghelp_stub),
! DECL_API("Lz32_SymSetSearchPathW_Dbghelp", Lz32_SymSetSearchPathW_Dbghelp_stub),

More details:
apilibs\kexbases\kexbases.dsp (DevStudio Project)
+ .\kernel32\Debug.c
+ .\ntdll\Dbg.c

+ ConvertFiberToThread =f0e120
+ QueryThreadCycleTime =f2e120

+ DebugBreak_stub (no action; default)
+ DebugBreak_new (display message box, TBD:with stack trace)
+ IsDebuggerPresent_no (default)
+ IsDebuggerPresent_yes
+ OutputDebugStringAW_stub (no action; default)
+ OutputDebugStringA_new (display ansi text in message box)
+ OutputDebugStringW_new (display unicode text in message box)
:... moved from unikernel32.c
:... now uses OutputDebugStringA_new

+ InitializeCriticalSectionEx_new

- OutputDebugStringW_new (moved to Debug.c)

+ DbgPrint_dbg (display formatted text in message box)
+ vDbgPrintEx_dbg (display formatted text in message box, aka DbgPrintEx)
+ vDbgPrintExWithPrefix_dbg (display formatted text in message box)
+ DbgBreakPoint_dbg (display message box with options)
:... options are: Abort app; Retry in debugger; Ignore breakpoint
+ DbgPrompt_dbg (display text prompt in message box, return no text)

^ optimized RtlInitializeCriticalSection* heirarchy

+ Lz32_SymGetSearchPathW_Dbghelp =f3e120
+ Lz32_SymSetSearchPathW_Dbghelp =f3e120
:... stubs for Dbghelp.Sym* when using HKLM...SM\KnownDLLs:Dbghelp=LZ32.dll

Edited by jumper
Link to comment
Share on other sites


Thanks for the update. jumper, is it your intention or more a bug, that we must change the KernelEx mode for some apps from default to Base (Kexbases,Kexbasen) or Legacy Base enhancements with regard to the error "...missing export Kernel32.dll: IsProcessorFeaturePresent"? Does this remain now?

Goodmaneuver, I have not been able to fix the Vlc errors on exit yet. I think, that your msvcrt is the renamed MSVCR.80.dll 8.0.31113.25 or not?

 Like I said, I don't get these errors with KerneEx 4.5.2


Edited by schwups
Link to comment
Share on other sites

Hi Jumper, still in the process of limiting/removing ReactOS on my system but I tested
the new kexbases.22 and I receive error messages regarding:
ntdll.vDbgPrintExWithPrefix - ComponentID: 4294967295
I think this is caused by mpr.dll from ReactOS - hope I can get rid of it soon but I thought
I'll let you know just in case it might hint at something.
Thank you for all your hard work !!

O.K., I am through now and kexbases.22 seem to be fine now. Will check the new core.ini again soon.
Quick question. Now that I do not have msvcrt.dll as an auxilliary anylonger the VLC player won't start. Was there another solution for that ? I seem to remember that it was recommended to deactivate KernelEx in system's msvcrt.dll ??


Edited by MiKl
Link to comment
Share on other sites

Schwups yes or 8.0.40209.38 see page 35. 8.040209.38 from LH4093 looks very similar to 8.0.31113.25 but altered slightly so I use this now as msvcrt.dll. I must say the oleaut32.dll chosen by ME SP1 is not the one I chose. The SPs chose WinNT version which is bigger but I chose from Windows2000-KB935839-v22l-x86-ENU.exe vs 2.40.4532.3 and it is 616 KB. It is an important file & this vs needs a KEX setting NT6a or similar. I think your exit error is probably due to KEX settings but lets see what the msvcrt.dll brings. I have msvcrt set to *\MSVCRT.DLL NT2K settings on the drive I used for VLC3 KEX21 test. These vs work in Win2K and the Unplug or Eject Hardware tray functioning is not affected in Win9X. MSVCR70 as MSVCRT did stop some programs as well eg DivX player.

Edited by Goodmaneuver
Found source of Oleaut32
Link to comment
Share on other sites

@schwups - There is no change regarding IsProcessorFeaturePresent. It continues to be deactivated in Core.ini for non-NT modes. Try NT4 or W2K mode for apps/modules that need it. I'll see about creating an ITO(*) version that can be safely enabled for all modes.

(*) ITO - ImportTable-Only. A "little" implementation or stub that is only used when a module won't load without it (Implicit link). KernelEx ITO functions do not resolve when delay-loaded (Explicit link) by apps probing for functions they want/hope to find.

@MiKl - Yes, that message box is the new vDbgPrintExWithPrefix I just added. Thanks for posting the image--this is the very first time I've seen it (I was unable to actually test it). I'll change the ComponentID to display as hex (4294967295 is 0xFFFFFFFF or -1) and correct the va_list parameter affecting the Message text (already done, but not tested!).

Link to comment
Share on other sites

I have PowerDVD7 set to KEX disabled and I get KernelEx - Ntdll.DbgPrint error window occurring on startup and shut down. Same error occurs with Maxthon on startup and shut down. I do not know if or what individual module makes this happen but it is exclusive to these programs so far. Both programs still operate only occurring since last KEX21.

Link to comment
Share on other sites

@ Jumper. While 'cleaning' my system I noticed that I do not even need kstub any longer !!
At least for the kernelex-depending apps that I use now. Awesome !!!!
Everything works great with core.ini up to 18. incl. notepad++ 7.6.6 !

But when using a newer version of core.ini notepad 7.6.6 does not work. Depending on the comp-setting
it either complains about 'IsProcessorFeaturePresent' or crashes right away.
Please let me know if you want/need any error reports.


Update: In the current setup Irfanview 4.5.2 now works !!
Unfortunately settings don't stick so it does not remember
to (re-)open in fullscreen, etc.
Follow up: As a workaround you can activate write-protection on irfanview's ini-file. It then uses a temp-ini which keeps some but not all settings.


Edited by MiKl
Link to comment
Share on other sites

> I have PowerDVD7 set to KEX disabled and I get KernelEx - Ntdll.DbgPrint error window occurring on startup and shut down.

Disabling KernelEx on an app does not disable it on submodules that are set to use a specific mode. The app needs to also be set to Override settings of individual modules. You are seeing the DbgPrint error windows now because DbgPrint is no longer a stub! The stub is still there and you can reenable it by specifying NTDLL.DbgPrint=kexbases.1
in Core.ini. This is already fixed in the next version.
On the other hand, it's good to finally be seeing the error message so we can fix the underlying problem(s). What is/are the error message(s)?

> I noticed that I do not ... even need kstub any longer !!
Neither do I. It is still useful for testing new definitions and for working around UPX incompatibilities.

> But when using a newer version of core.ini notepad 7.6.6 does not work.

The default mode has changed so you need to manually set it to Win2000 (or as needed). Lowering the default mode should reduce the number of problems for new users and incompatibilities with various unofficial service and update packs.

Link to comment
Share on other sites

>What is/are the error message(s)? :- There is no error message inside the window the title bar says KernelEx - Ntdll.DbgPrint

DbgPrint is a function of NTDLL so why was it stubbed? Does it mean that KEX was just unable to report errors? If it gets stubbed again next vs would it be able to enabled with Core.ini?

I have found that DbgPrint errors are probably from the registry. When I loaded KMPlayer from a different directory the DbgPrint error did not occur. That meant KMP file association, which it has many, was not directed to player in reg. I then fixed the DbgPrint error by unassociating formats then reassociating formats from within the player. There are probably remnants of Maxthon 1.6 in reg I estimate and there are a lot of reg settings associated to Maxthon. I think from my memory I have manually assigned reg settings across from Maxthon 1.6 which might be the mistake.

I did read that there is a maximum of 25 programs that can be used in the settings but I cannot find the post, it was you Jumper. There is more to this post and there is another figure of 100 or thereabouts, I did not know exactly what you meant. Are the DLLs included and is this number the max number of loaded modules with individual settings?

ACM files. why are they not included in KEX settings. (when trying to solve DbgPrint with modern HDD build) opening an ASF file with MP42 & 160 or 161 audio using MPLAYER2.EXE :- (which does not have DbgPrint error), loaded DIVX32.ACM as it did not have compatible audio decoder, DIVX32.ACM was not working though. I solved this ASF playback issue with WMP9 and WMP6.4 by using WMASF.AX from WMP11, 11.0.5721.5238.

Edited by Goodmaneuver
Improved - Old HDD still had IsProcessorFeaturePresent on same files just had to try some games
Link to comment
Share on other sites

@ Goodmaneuver. You seem to be quite good in getting apps to run !! Much better than me.
Can you maybe look into SeaMonkey 2.9. or 2.9.1 ?? Both are available as zip-files on Seamonkey's ftp.
Higher versions won't run at all I think.

Link to comment
Share on other sites

Miki I spent hours on this but am not a programmer see MSFN_Here & MSFN_Here 

The KEX delta updates are a bit tricky, make sure your KernelEx folder has these files in it.

KernelEx.dll    26/10/2018  4.5.2016.19
Kexbasen.dll  28/05/2019  4.5.2016.21
kexbases.dll   08/07/2019  4.5.2016.22
KexCOM.dll   12/09/2017  4.5.2016.18
Sheet.dll        24/01/2019  4.5.2016.19
Verify.exe      05/10/2018  4.5.2016.18
VKrnlEx.vxd   04/09/2017
Core.ini         11/06/2019

Jumper you mentioned from p40

>Regarding GDI32.GetCharABCWidthsI, the Kernel4.5.2 source code states in UberGDI.c:
//NOTE: usp10 is probing for that function, don't forget to exclude it

There is no import functions missing with DW. If KEX is disabled on USB10 then it would not work if it is probing for GetCharABCWidthsI wouldn't it? Unless 4.5.2 is suggesting keep it disabled otherwise it will probe for it? I do not use updated GDI32 from ME SP if that is what the UberGDI.c is referring to?

Edited by Goodmaneuver
Improved MSFN S/Cs created from my profile
Link to comment
Share on other sites

I found out what the DbgPrint error is possibly caused by the latest KEX not updating registry like it should. The file created times are not working (new files). I have even viewed with other HDD with 4.5.2 and the new file created times are not working. This came good by going back to KEX18. Another fault I have but not on all HDD so may not be KEX fault, certain files do not want to register.


Edited by Goodmaneuver
Not Correct
Link to comment
Share on other sites

  • jumper changed the title to KernelEx 4.5 Core Updates (4.5.2016.25)

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   1 member

  • Create New...