Don wrote:
Rainer Schuetze wrote:
I knew that blog, but I expected to find the necessary data somewhere
in the "undocumented" (but still available) structures.
But I had to dig a little deeper into ntdll myself and came up with a
patch that is part of the multithread-support for DLLs:
http://d.puremagic.com/issues/show_bug.cgi?id=3885
It emulates the behaviour at process startup time, and modifies the
data structures so that windows handles the DLL as if it was loaded
with the process. This has the nice benefit that you don't need to
handle the creation of new threads.
The downsides are:
- DLL-unload is disabled, but I think unloading a DLL that uses TLS is
problematic anyway)
- It will leak some pointer-arrays in favor of not causing crashes due
to other threads using TLS at same time as reallocating these arrays.
As XP is not a fast moving target anymore, I hope that ntdll will not
change a lot, so it will not need adjustment for every windows-update.
I've checked SP2 and SP3, which look very much the same with respect
to TLS implementation.
Rainer
You're totally awesome. This is a game-changer.
Thanks :-) The patch might still need a little polishing before finding
it's way into druntime, though...