Originally Posted by Marius Fett
I know they work under Vista 32, but 64 is a mystery to me.
Should work fine. The bigger challenge was getting modding tools to run correctly going from XP to Vista.
32-bit applications can run within a 64-bit operating system on Windows because of the flags set in their portable executable (PE) file format header. In a 32-bit address space, the most memory allocated for user applications will be 2 Gb. That internal safeguard allowed developers to use that extra high bit in their pointers for other things but that caused problems when Microsoft wanted to open up the user address space:
Originally Posted by msdn.microsoft.com
Before support for /3GB was added to [32-bit] Windows [in Windows 2000], an application could never access a pointer with the high bit set. Only addresses that could be represented by the first 31 bits of a 32-bit pointer could be accessed by user mode applications. This left 1 bit unused, so some developers, being the clever coders they were and not wanting to waste so much as a bit in the process address space, made use of it for other purposes (e.g., to flag a pointer as referencing a particular type of application-specific allocation). This caused a conundrum when /3GB was introduced because these types of applications would not be able to easily distinguish a legitimate pointer that happened to reference memory above the 2GB boundary from a pointer that referenced memory below 2GB but had its high bit set for other reasons. Basically, booting a machine with /3GB could have broken such applications. To deal with this, Microsoft added support for a new bit flag in the Characteristics field of the Win32 Portable Executable (PE) file format (the format that defines the layout of executable files—EXEs and DLLs—under Windows) that indicates whether an application is large-address aware. When this flag (IMAGE_FILE_LARGE_ADDRESS_AWARE) is enabled, bit 32 in the Characteristics field in an executable file's header will be set. By having this flag set in its executable header, an application indicates to Windows that it can correctly handle pointers with the high bit set—that it doesn't do anything exotic with this bit. When this flag is set and the appropriate version of Windows has been booted with the /3GB option, the system will provide the process with an expanded private user mode address space
In other words, Windows changed the way they started reading the PE file format to ensure that 32-bit applications (both .exe files and their .dlls) would run correctly in a /3Gb 32-bit system or in a 64-bit system. Unless the application specifically says, "I can handle big address spaces", it will only receive the 2Gb user space it was expecting, even under 64-bit Windows.