Concerning the e-mail http://www.winehq.org/pipermail/wine-devel/2010-April/082900.html
it seems that it is broken because in wine there is no way to ensure that the string will be in the lower 2GB. Actually, according to the Windows Memory Management model:
http://www.intellectualheaven.com/Articles/WinMM.pdf
only the 2 lower Gb are able to be used in user mode in Windows. So actually in Windows OS you have a way to ensure that all user things will be in the lower 2Gb. Is there something similar in WINE, If not, would it not be logical to replicate also that behaviour, so that then d3dxhandle can rely in the MSB? What is more, if there is not that way to ensure that, and I guess that the d3dxx_xx.dll might rely on that to distinguish between strings and d3dxhandle, there might be cases even using the original d3dx, programmes would crash in wine when the wine implementation allocates strings in memory positions where then MSB = 1.