Jump to content

Kext: DIY KernelEx extensions


Recommended Posts


My default mode: KernelEx is enabled. HKEY_LOCAL_MACHINE\SOFTWARE\KernelEx  "DisableExtensions"=dword:0x00000000 (0). 

Thanks for corrections and explanations. 

Me too.

That explains why jumper didn't see the Dependency Walker problem ...

Joe.

Link to comment
Share on other sites

>I think it should be PrintDlgExW=>ComDlgKs.dll:PrintDlgExW !?

Good eye, I hoped it would be noticed. :)

This was an intentional example of how the '.dll' extension is optional:

; =>[[drive:]path]library[.ext]:function

SumatraPDF 2.11 was my test case for this forwarding definition.

Link to comment
Share on other sites

After updating to 730 an IE script error occured in windows\web\controlp.htt, if I tried open the control panel. This happened on two of three machines.

Run => regsvr32 webvw.dll doesn't work. Downgrading to 626 fixed the error.

Edited by schwups
Link to comment
Share on other sites

After updating to 730 an IE script error occured in windows\web\controlp.htt, if I tried open the control panel. This happened on two of three machines.

Run => regsvr32 webvw.dll doesn't work. Downgrading to 626 fixed the error.

Probably one of the new definitions. First we need to look at what was reported in the Kstub730.log file. Each action is now logged. :sneaky:

The next thing would be to try the older definitions with Kstub730.dll. You can do this by removing Kstub730.ini--Kstub730 will use Kex stubs.ini if it doesn't find Kstub30.ini. (Kstub626.dll also has this feature.:yes:)

Edited by jumper
Link to comment
Share on other sites

The next thing would be to try the older definitions with Kstub730.dll. You can do this by removing Kstub730.ini--Kstub730 will use Kexstubs.ini if it doesn't find Kstub30.ini. (Kstub626.dll also has this feature.

Do you mean Kexstubs.ini = stubs.ini of version 626 and I have to paste it in the KernelEx folder? If so, then I always get questions of Kexstub730 before opening a new Explorer window:

Shlwapi.dll:SHRegisterValidateTemplate=t2?

SetLastError (1/0) [Yes/No]

more options [Cancel]

and

Shlwapi.dll:SHRegisterValidateTemplate=t2?

return -1/0 [Yes/no]

more options [Cancel]

Edited by schwups
Link to comment
Share on other sites

Kstub730.log file:

= Shlwapi.dll:SHRegisterValidateTemplate=t2 ? =

= Kernel32.dll:GetUserGeoID=t1 =

Both of these definitions already existed, so the problem is likely a definition that was removed. I'll address that in the next post.

Using this Table of Geographical Locations, we can now upgrade GetUserGeoID from GEOID_NOT_AVAILABLE (-1), to:


[Kernel32.dll]
GetUserGeoID=r0xF4s1 ;US
; or
GetUserGeoID=r0x5Es1 ;Germany

Link to comment
Share on other sites

Do you mean Kexstubs.ini = stubs.ini of version 626 and I have to paste it in the KernelEx folder?

Yes, or leave it if it is still there. I'll correct post #51. Thanks!

If so, then I always get questions of Kexstub730 before opening a new Explorer window:

Shlwapi.dll:SHRegisterValidateTemplate=t2?

SetLastError (1/0) [Yes/No]

more options [Cancel]

and

Shlwapi.dll:SHRegisterValidateTemplate=t2?

return -1/0 [Yes/no]

more options [Cancel]

The prompt occurs because Kstub730 supports the '?' directive (whereas Kstub626 did not):


; =r#s#[e[#]][?]

Remove the '?' to use the 't2' without prompting.

I added the '?' because the function is undocumented and the 't' was a guess. Users can try 'f2' or 'r<n>s2' to change the return value. An 'e' can also be tried. This is the purpose of the prompt sequence: to be able to experiment with different options without restarting the app. When prompted, Cancel+Yes is equivalent to 't2'--what combinations of responses have or haven't worked for you?

SHRegisterValidateTemplate was first introduced in Windows 2000, so you are using a W2K+ file somewhere in your WinMe(?) system. This isn't a bad thing, but it would be good to know what file is making the call. Please search your <WinSys> folder for files containing "SHRegisterValidateTemplate". Also, check what modules are in use by Explorer at the time of this prompt. Does your system that is not having a problem happen to be SE, or not have all the same SP's/upgrades?

Thanks for the report and good followup! :thumbup

Link to comment
Share on other sites

what combinations of responses have or haven't worked for you?

All combinations work to open a folder, but no combination work to open the control panel.

Does your system that is not having a problem happen to be SE, or not have all the same SP's/upgrades?

I corrected the post #50. The IE script error occurred on all three Win ME test systems. The SP1 isn't installed.

Installed: 1. IE6 SP1 2. DirectX9c 3. NetFramework 1.1 and 2.0 4. unicows.dll (1.1.3790.0) 5. VisualBasic 6.0 SP6 (vbrun60sp6.exe) 6. MDAC 2.81 SP1 7. VisualC++ red 2005 (SP) and 2008 8. MS Win ME Update User / GDI 9. GDIPLUS (WinXP)

Edited by schwups
Link to comment
Share on other sites

After updating to 730 an IE script error occured in windows\web\controlp.htt, if I tried open the control panel. This happened on two of three machines.

Run => regsvr32 webvw.dll doesn't work. Downgrading to 626 fixed the error.

Alteration of the sequence in the core.ini from "contends=std,kexbases,kexbasen,Kstub730" to "contents=Kstub730,std,kexbases,kexbasen" solves the problem. :rolleyes:

Edited by schwups
Link to comment
Share on other sites

Alteration of the sequence in the core.ini from "contends=std,kexbases,kexbasen,Kstub730" to "contents=Kstub730,std,kexbases,kexbasen" solves the problem. :rolleyes:

Very good. This means that one of the definitions is colliding with a standard function or one in kexbases or kexbasen. I wasn't aware of any with SE other than the intentional PrintDlgEx, but will recheck.

Testload.exe can be used to detect collisions (load addresses of functions in stubs.ini above 0x10001nnn), but I'll design a better tool.

The reason for increasing the priority of Kstub730 was to override KernelEx on ComDlg32:PrintDlgExA/W. That can also be done with a .names definition in Core.ini:


[NT2K.names]
ComDlg32.PrintDlgExA=Kstub730.0
ComDlg32.PrintDlgExW=Kstub730.0

I've now rechecked for conflicts using TestLoad and found none on my SE system, but the Msvcr90.dll section would probably be an issue for those with the latest version installed (definitions are meant to augment the original version). Before Kstub730, [Msvcr90.dll] was missing the '0'.

Edited by jumper
Link to comment
Share on other sites

Kstubs816 now posted with better forwarding, better definitions

+ Forwards can now be abbreviated and commented

+ Many new forward definitions providing full function support

+ Complete definitions for all stubbed functions

- Stepload support removed

Note: Full-line comments got broken last week when I was trying a trick to avoid needing system restarts in some cases. The workaround is to remove from Kstub816.ini / stubs.ini all definitions that are commented out. I've posted a new download with the updated Kstub816.ini.

Edit: 822 is what 816 was supposed to be. It has the same features, but without the full-line and end-of-forwards-line comment bugs.

Edited by jumper
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...