What's the problem? Converting between a (real-mode) far pointer and a linear pointer is easy.
DWORD FpToLinear(FAR void* fp)
return ((DWORD)fp >> 12) + ((DWORD)fp & 0xffff);
What could be more straightforward than that? =D
I get that, but what will a software development kit *designed for Windows 8* do for you on XP ?
seems like if the firefox developer community wants a "metro" UI version of firefox that runs on XP the way to do that is to build a UI library for XP that is used when running on xp /vista / windows 7.
then have an interface that has firefox run with that library on the old os and the windows 8 bits when it is running on windows 8.
hacking the windows 8 stuff to run on xp is something that may never be stable, could break if the sdk changes or of any undocumented stuff is used and there are I am sure other issues in that route.
the clean / portable / open way will be to not depend on the Microsoft sdk on the wrong versions of windows. yes it means some work. but the result should be far better and if done right should help keep the code portable to other OS's and platforms.