On Sat, Jan 20, 2001 at 05:27:10PM +0100, gerard patel wrote:
[...]
> I did not include the trace as it's rather large (I can mail it to you
> if you want...) but what happens is clear enough : the main exe loads
> implicitely KERNEL32 but not USER - USER is loaded implicitely
> by a DLL loaded by LoadLibrary.
> So when the kernel initialisation is done, USER is not yet loaded.
> It's unusual but seems perfectly valid IMO.
>
> What about adding a specific Wine call from User to Kernel to trigger the
> initialization when USER is loaded ? (maybe there is already an
> undocumented one - you are the undisputed master here :-))
Hmm.
What about abusing EnableKernel() for that ?
This function reverts the effect of DisableKernel() in 3.0
(which just calls DisableDOS(), which disables DOS calls),
and does *nothing* in 3.1.
And Wine assigns it to KERNEL_nop.
So it seems we could indeed abuse this function and check via a boolean
whether Callouts have been initialized already (to protect against "real"
EnableKernel() calls by <= 3.0 applications).
Just an idea... (you might not like it, though ;-)
Andreas Mohr